UVa216
来源:互联网 发布:淘宝客服发展前景 编辑:程序博客网 时间:2024/05/23 14:51
纯粹枚举
枚举所有排列,记录最小的距离。
不过貌似有单源最短路径算法。
#include<stdio.h>#include<math.h>#define Maxnode 9#define INF 100000int ans[Maxnode];int a[Maxnode];double distance[Maxnode],ansdistance[Maxnode];int nodes;double maxdist;struct node{int x,y;}vector[Maxnode];void dfs(int cur){int i,ok,j;double xdis,ydis,dist,total_dis;if(cur==nodes+1){for(i=1,total_dis=0;i<nodes;i++){xdis=vector[a[i]].x-vector[a[i+1]].x;ydis=vector[a[i]].y-vector[a[i+1]].y;dist=sqrt(xdis*xdis+ydis*ydis);distance[i]=dist=dist+16;total_dis +=dist;}if(total_dis<maxdist){maxdist=total_dis;for(i=1;i<=nodes;i++){ans[i]=a[i];}for(i=1;i<nodes;i++){ansdistance[i]=distance[i];}}return ;}else{ //枚举所有的排列for(i=1;i<=nodes;i++){ok=1;a[cur]=i;for(j=1;j<cur;j++){if(a[j]==a[cur]){ok=0;break;}}if(ok)dfs(cur+1);}}}int main(){int i,case_num=1;while(scanf("%d",&nodes)!=EOF&&nodes){maxdist=INF;for(i=1;i<=nodes;i++){scanf("%d %d",&vector[i].x,&vector[i].y);}dfs(1);printf("**********************************************************\n");printf("Network #%d\n",case_num);for(i=1;i<nodes;i++){printf("Cable requirement to connect (%d,%d) to (%d,%d) is %.2f feet.\n",vector[ans[i]].x,vector[ans[i]].y,vector[ans[i+1]].x,vector[ans[i+1]].y,ansdistance[i]);}printf("Number of feet of cable required is %.2f.\n",maxdist);case_num++;}return 0;}
- UVa216
- uva216
- uva216
- uva216
- UVA216
- UVA216 Getting in Line
- UVa216 Getting in Line
- UVA216-Getting in Line
- uva216 c++回溯法
- uva216 Getting in Line
- uva216 Getting in Line
- UVA216 ——dfs
- uva216 Getting in Line
- (要经常看)uva216
- uva216-Getting in Line(网络连线)
- uva216(Getting in Line )-简单回溯
- UVA216 - Getting in Line(哈密顿图)
- Uva216—— Getting in Line
- 浅析StackTrace
- CentOS 5.X 安装 GForge ,安装 postgresql (gforge安装)
- 程序设计师真情忏悔录
- sina sdk 返回来的结果(给自己看的!)
- C#调用Win32 的API函数--User32.dll
- UVa216
- POJ 2516(最小费用最大流)
- XE2 日期字符串转日期的函数
- 《HP大中华区总裁孙振耀退休感言》
- 建立Android 公共库的方法
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- 学习之路,苦于始
- Android中使用Animation实现控件的动画效果以及Interpolator和AnimationListener的使用
- UVa140