平面n个点 求从最左边点到最右边点再返回的最短路长 uva 1347
2017-10-11 09:53
239 查看
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define INF 0x3f3f3f3f using namespace std; int x[1010],y[1010],n; double dp[1010][1010],d[1010][1010]; double dfs(int t1,int t2){ if(dp[t1][t2]) return dp[t1][t2]; if(t1 == n-1) return dp[t1][t2]=d[t1] +d[t2] ; dp[t1][t2]=min(dfs(t1+1,t2)+d[t1][t1+1],dfs(t1+1,t1)+d[t2][t1+1]); return dp[t1][t2]; } int main(){ while(scanf("%d",&n) == 1){ memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]); for(int i=1;i<=n;i++){ for(int j=i;j<=n;j++){ d[i][j]=d[j][i]=sqrt( (double)((x[i]-x[j]) * (x[i]-x[j]) + (y[i]-y[j]) * (y[i]-y[j]) )); } } printf("%.2f\n",dfs(2,1)+d[1][2]); } }
相关文章推荐
- Android之Toolbar的三个问题:修改左边箭头颜色、怎样修改右边以及子activity中的toolbar添加返回箭头
- Toolbar的三个问题:修改左边箭头颜色、怎样修改右边以及子activity中的toolbar添加返回箭头
- Android之Toolbar的三个问题:修改左边箭头颜色、怎样修改右边以及子activity中的toolbar添加返回箭头
- 对于一个字符串,设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。给定字符串A和它的长度n以及特点位置p,请返回旋转后的结果。
- Toolbar的三个问题:修改左边箭头颜色、怎样修改右边以及子activity中的toolbar添加返回箭头
- 返回数组最左边位置
- UVa10803_Thunder Mountain(最短路)(小白书图论专题)
- Bellman-Ford,最短路(在环中,UVA 11090)
- 让ToolBar的Item放置在右边(默认为左边)
- UVA 11374 Airport Express(最短路)
- UVa 116 (多段图的最短路) Unidirectional TSP
- 数组左边减去右边数值的最大差值
- 图-用DFS求连通块- UVa 1103和用BFS求最短路-UVa816。
- css样式实现左边的固定宽度和高度的图片或者div跟随右边高度不固定的文字或者div垂直居中(文字高度超过图片,图片跟随文字居中,反之文字跟随图片居中非table实现)
- Uva 658 - It's not a Bug, it's a Feature!//最短路
- 2016 Europe - Northwestern I - Iron and Coal UVALive - 7767(最短路)
- # 点击左边按钮,页面出现在右边(iframe标签) #
- Uva(10048),最短路Floyd
- Funny Car Racing UVA - 12661 (当初就不该浪的最短路)
- UVALive 6378 Friend Chains (多源最短路 spfa)