标签:name span nbsp amp pid sqrt 开始 namespace using
房间里放着n块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处。
输入格式:
第一行一个数n (n<=15)
接下来每行2个实数,表示第i块奶酪的坐标。
两点之间的距离公式=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
输出格式:
一个数,表示要跑的最少距离,保留2位小数。
4 1 1 1 -1 -1 1 -1 -1
7.41
1 #include <algorithm> 2 #include <cstdio> 3 #include <cmath> 4 5 using namespace std; 6 7 int n,vis[20]; 8 struct Node 9 { 10 double x,y; 11 }node[20]; 12 double ans=1<<30,dis[20][20]; 13 14 void DFS(int now,double dist,int cnt) 15 { 16 if(dist>=ans) return; 17 if(cnt==n+1) 18 { 19 if(ans>dist) ans=dist; 20 return ; 21 } 22 for(int i=1;i<=n;i++) 23 { 24 if(vis[i]) continue; 25 vis[i]=1; 26 DFS(i,dist+dis[now][i],cnt+1); 27 vis[i]=0; 28 } 29 } 30 31 int main() 32 { 33 scanf("%d",&n); 34 for(int i=1;i<=n;i++) 35 scanf("%lf%lf",&node[i].x,&node[i].y); 36 for(int i=0;i<=n;i++) 37 for(int j=0;j<=n;j++) 38 dis[i][j]=sqrt((node[i].x-node[j].x)*(node[i].x-node[j].x)+(node[i].y-node[j].y)*(node[i].y-node[j].y)); 39 DFS(0,0,1); 40 printf("%.2lf",ans); 41 return 0; 42 }
标签:name span nbsp amp pid sqrt 开始 namespace using
原文地址:http://www.cnblogs.com/Shy-key/p/7189560.html