首页 > 代码库 > P1433 吃奶酪
P1433 吃奶酪
题目描述
房间里放着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"stdafx.h"#include<iostream>#include<cstring>#include<cstdio>#include<vector>#include<cmath>#include<map>#include<algorithm>#define INF 0x3f3f3f3fusing namespace std;int N,vis[20];double ans=INF;struct cc{ double x,y;}nod[20];double dis(int a,int b){ return sqrt((nod[a].x-nod[b].x)*(nod[a].x-nod[b].x)+(nod[a].y-nod[b].y)*(nod[a].y-nod[b].y));}void search(int x,int dep,double len){ if(len>=ans) return; if(dep==N){ ans=min(len,ans); return; } for(int i=1;i<=N;i++){ if(i==x)continue; if(!vis[i]){ vis[i]=1; search(i,dep+1,len+dis(x,i)); vis[i]=0; } } }int _tmain(){// freopen("01.in","r",stdin); scanf("%d",&N); for(int i=1;i<=N;i++)cin>>nod[i].x>>nod[i].y; search(0,0,0.0); printf("%.2lf",ans); return 0;}
P1433 吃奶酪
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。