吃奶酪

来源:互联网 发布:淘宝贷款还款入口 编辑:程序博客网 时间:2024/04/27 19:41
题目描述

房间里放着n块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处。

输入输出格式

输入格式:
第一行一个数n (n<=15)

接下来每行2个实数,表示第i块奶酪的坐标。

两点之间的距离公式=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))

输出格式:
一个数,表示要跑的最少距离,保留2位小数。

输入输出样例

输入样例#1:
4
1 1
1 -1
-1 1
-1 -1
输出样例#1:

7.41

#include<cstdio>#include<iostream>#include<cmath>using namespace std;int visit[16]; double  min1=(1<<31)-1; int n;  struct stu   {    double x;    double y;   }a[16];void dfs(int  nowp,  double now1 ,int step)//now当前节点,past已经走过的路程 ,step走过的步数 {if(step==n+1&&now1<min1)     min1=now1; if(now1>min1)return ;for(int i=1;i<=n;i++){if(visit[i]==0){visit[i]=1;//标记这个东西已经被吃过 dfs(i,now1+sqrt((a[nowp].x-a[i].x)*(a[nowp].x-a[i].x)+(a[nowp].y-a[i].y)*(a[nowp].y-a[i].y)),step+1);visit[i]=0;} } }int main(){cin>>n;for(int i=1;i<=n;i++){   scanf("%lf%lf",&a[i].y,&a[i].x); }  dfs(0,0,1); printf("%.2lf",min1); return 0;}


0 0
原创粉丝点击