10.1做题——洛谷P1433 吃奶酪
2015-10-01 20:49
423 查看
洛谷1433 吃奶酪
本题地址: http://www.luogu.org/problem/show?pid=1433
题目描述
房间里放着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+最优化剪枝
代码非常简单,就不用图片了,直接分享给大家
本题地址: http://www.luogu.org/problem/show?pid=1433
题目描述
房间里放着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<iostream> #include<cmath> #include<cstring> using namespace std; const int N=20; struct node { double x,y; }zb ; bool eat ; int n; double ans; double jl(double x1,double y1,double x2,double y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } void dfs(int i,int s,double k) { if(k>ans) return;//最优化剪枝 int j; if(s==n&&k<ans) ans=k; for(j=1;j<=n;j++) if(!eat[j]) { eat[j]=true; dfs(j,s+1,k+jl(zb[i].x,zb[i].y,zb[j].x,zb[j].y)); eat[j]=false; } } int main() { int i; ans=1000000000.0; memset(eat,false,sizeof(eat)); cin>>n; for(i=1;i<=n;i++) cin>>zb[i].x>>zb[i].y; dfs(0,0,0); printf("%.2lf",ans); return 0; }
代码非常简单,就不用图片了,直接分享给大家
相关文章推荐
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- Hadoop FS Shell
- DFS使用方法总结
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- C 语言实现迷宫 DFS算法
- 一幅图弄清DFT与DTFT,DFS的关系
- HDFS---Namenode
- HDFS ---- Services startup
- POJ1523 SPF dfs
- NOIP复习计划
- TYVJ1193 括号序列解题报告
- 对DP的一点感想
- wikioi1004 四子连棋 解题报告
- poj1731 Orders dfs
- Surrounded Regions
- Binary Tree Zigzag Level Order Traversal,Restore IP Addresses,Word Search,Simplify Path