题目大意:
要吃n块奶酪,老鼠至少要跑多远?老鼠一开始在 (0,0)(0,0) 点处。
分析:
坐标可能为实数,因此要用double类型存储。然后注意一下最小值和边界条件就行了。
代码:
#include<bits/stdc++.h>
using namespace std;
struct Node{
double x,y;
};
Node f[20];
bool v[20];
int n;
double s=1e9;
double yzx(double ax,double ay,double bx,double by){
return sqrt((ax-bx)(ax-bx)+(ay-by)(ay-by));
}
void dfs(int d,double m,int w){
if(m>=s)return;
if(d>n){
s=m;
return;
}
for(int i=1;i<=n;i++)
if(!v[i]){
v[i]=1;
dfs(d+1,m+yzx(f[w].x,f[w].y,f[i].x,f[i].y),i);
v[i]=0;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>f[i].x>>f[i].y;
dfs(1,0,0);
printf(“%.2lf\n”,s);
return 0;
}