洛谷P1433 吃奶酪
2018-03-03 09:16
162 查看
题目描述
房间里放着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
dfs每一个点,外加一个剪枝(当前的长度如果比之前的长度长就跳过)
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<math.h>
using namespace std;
struct node
{
double x;
double y;
}point[16];
bool vis[16];
int n;
double ans = 0x7fffffff;//初始答案设置为无限大
void dfs(double x,double y,int step,double tmp)
{
if (tmp > ans)//当前的长度如果比之前的长度长就跳过
return;
if (step > n)
{
ans = min(ans, tmp);
return;
}
for (int i = 1; i <= n;i++)
if (!vis[i])
{
vis[i] = true;
dfs(point[i].x, point[i].y, step + 1, tmp + sqrt((point[i].x - x)*(point[i].x - x) + (point[i].y - y)*(point[i].y - y)));
vis[i] = false;
}
}
int main()
{
//freopen("1.txt", "r", stdin);
cin >> n;
for (int i = 1; i <= n; i++)
cin >> point[i].x >> point[i].y;
dfs(0, 0, 1,0);
printf("%.2f", ans);
return 0;
}
相关文章推荐
- 10.1做题——洛谷P1433 吃奶酪
- Hawk: Google手机将会动谁的奶酪
- 《CTO》专刊:调查:谁动了你的奶酪?
- 谁动了山寨之父联发科的奶酪(一)
- 产品需求分析:用户的“奶酪”不要碰
- 谁动了我的奶酪-读后感
- 苏宁“百日会战” 动了谁的奶酪
- ZH奶酪:putty远程登录Linux服务器非常慢
- ZH奶酪:C语言中malloc()和free()函数解析
- ZH奶酪:如何在Ubuntu上安装Java/管理多个JAVA/设置JAVA_HOME
- 放弃古法生产奶酪味道该如何保护
- 王思聪看好的同城快递专人配 没场景就啃不动的大奶酪
- 【头条】思科:不想让别人动你的奶酪?那就享受变化吧!
- 谁敢动英伟达的奶酪?AI芯片领域,这12家创业公司值得关注
- 广西的荔枝内蒙的奶酪
- 谷歌动了谁的奶酪? CCTV ? or 百度?
- 谁动了联发科的奶酪(二):智能手机
- 美国奶酪(芝士) - cheese
- 谁动了“支付”的奶酪?移动支付蓝海剖析
- 安卓PC能否撬动微软的奶酪