Uva 216 - Getting in Line
来源:互联网 发布:地信算法及代码 编辑:程序博客网 时间:2024/05/16 06:40
就是dfs全排列找最优解
1Y
8的数据实在是太小了==
#include<stdio.h>#include<math.h>int cho[10];double ans;int pns[10];int n;struct point{double x,y;}p[10];double odis(int i,int j){double a1=p[ i ].x,a2=p[i].y;double b1=p[ j ].x,b2=p[j].y;double d1=(a1-b1)*(a1-b1);double d2=(a2-b2)*(a2-b2);double res=sqrt(d1+d2);return res;}int place(int x){int i;for(i=1;i<x;i++)if(cho[i]==cho[x])return 0;return 1;}int dfs(int x){int i;if(x>n){double res=0;for(i=2;i<=n;i++)res+=odis(cho[i-1],cho[i]);if(res<ans){ans=res;for(i=1;i<=n;i++)pns[i]=cho[i];}}else {for(i=1;i<=n;i++){cho[x]=i;if(place(x))dfs(x+1);}}}int main(){int t=0;while(scanf("%d",&n)!=EOF&&n){int i;for(i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);ans=sqrt(150*150*2.0)*n;dfs(1);ans+=(n-1)*16.0;printf("**********************************************************\n");printf("Network #%d\n",++t);for(i=2;i<=n;i++){printf("Cable requirement to connect (%.0lf,%.0lf)",p[pns[i-1]].x,p[pns[i-1]].y);printf(" to (%.0lf,%.0lf) is %.2lf feet.\n",p[pns[i]].x,p[pns[i]].y,odis(pns[i-1],pns[i])+16);//printf("odis(%d,%d)=%lf\n",pns[i-1],pns[i],odis(pns[i-1],pns[i]));}printf("Number of feet of cable required is %.2lf.\n",ans);}return 0;}
- UVa 216 Getting in Line
- Uva 216 Getting in Line
- uva 216 - Getting in Line
- uva 216 - Getting in Line
- UVa 216 - Getting in Line
- uva-216 - Getting in Line
- Uva 216 - Getting in Line
- uva 216 - Getting in Line
- UVa 216 - Getting in Line
- uva 216 Getting in Line
- UVA 216 - Getting in Line
- UVA 216 Getting in Line
- UVA 216 Getting in Line
- UVa 216 Getting in Line
- UVA 216 - Getting in Line
- uva 216 Getting in Line
- uva - 216 - Getting in Line
- uva 216 - Getting in Line
- java中数组的length属性的返回值探究
- PHP 工厂模式
- 拉卡拉手机刷卡器音频通讯技术原理初步分析
- C++查漏补缺——String(1)
- h264 cabac 总结
- Uva 216 - Getting in Line
- JDBC与Oracle的连接
- cantor的数表
- 基础总结篇之二:Activity的四种launchMode
- maven group artifact常用的仓库搜索地址
- 我所理解的设计模式(C++实现)——简单工厂模式(Simple Factory Pattern)
- getElementsByName 在IE下面的bug 的解决
- CreateThread()、_beginthreadex()及、AfxBeginThread()的联系和区别
- 准备开始写博客了