UVA - 116 Unidirectional TSP 多段图的最短路
来源:互联网 发布:自动点击网页软件 编辑:程序博客网 时间:2024/05/03 19:00
题目大意:给出一个矩阵,要求每列都要路过,起点必须是第一列,求经过的最短路径的上面的数字和最小
解题思路:公式为d[i][j] = min(d[i][j+1],d[i+1][j+1],d[i-1][j+1]) + a[i][j],本题要注意,因为可以从最上面一行到最后一行,或者从最后一行到第一行,注意i的变化
#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn = 300 + 10;int row,col;int DP[maxn][maxn];int m[maxn][maxn];int ans[maxn][maxn];int main() {while(scanf("%d%d",&row,&col) != EOF) {for(int i = 1; i <= row; i++)for(int j = 1; j <= col; j++) scanf("%d", &m[i][j]);memset(ans,0,sizeof(ans));int min_ = 0x3f3f3f3f;int first;for(int i = col; i >= 1; i--) {for(int j = 1; j <= row; j++) {if(i == col)DP[j][i] = m[j][i];else{int mov[3] = {j,j-1,j+1};if(j == row)mov[2] = 1;if(j == 1)mov[1] = row;sort(mov,mov+3);DP[j][i] = 0x3f3f3f3f;for(int k = 0; k < 3; k++) {int temp = DP[mov[k]][i+1] + m[j][i];if(temp < DP[j][i]) {DP[j][i] = temp;ans[j][i] = mov[k];}}}if(i == 1 && DP[j][i] < min_) {min_ = DP[j][i];first = j;}}}printf("%d",first);int i,j;for(i = ans[first][1],j = 2; j <= col;i = ans[i][j],j++)printf(" %d",i);printf("\n");printf("%d\n",min_);}return 0;}
0 0
- UVA - 116 Unidirectional TSP(dp+多段图的最短路)
- UVA - 116 Unidirectional TSP 多段图的最短路
- UVa 116 Unidirectional TSP (多段图的最短路 DP)
- Uva - 116 - Unidirectional TSP(多段图的最短路,动态规划)
- 动态规划--多段图的最短路--单向TSp(Unidirectional TSP ,UVa 116)
- UVa 116 Unidirectional TSP
- UVA 116 - Unidirectional TSP
- UVa 116 - Unidirectional TSP
- uva 116 Unidirectional TSP
- UVa 116Unidirectional TSP
- UVa 116 - Unidirectional TSP
- Uva 116 - Unidirectional TSP
- UVa 116 - Unidirectional TSP
- Uva - 116 - Unidirectional TSP
- UVa 116 - Unidirectional TSP
- uva 116 - Unidirectional TSP
- UVa:116 Unidirectional TSP
- uva 116 Unidirectional TSP
- UVALive 5102 Fermat Point in Quadrangle 极角排序+找距离二维坐标4个点最近的点
- 联合体和结构体的区别
- 2012 ACM-ICPC 杭州站解题报告(4道签到题)
- Linux Ubuntu 环境变量小结
- android中使用viewpager延迟加载页面
- UVA - 116 Unidirectional TSP 多段图的最短路
- 关于Android中Animation的停止
- 解决在sdk manager中更新文件后出现This Android SDK requires Android Developer Toolkit version 23.1的错误
- 陷阱重重的C++赋值重载函数operator=
- iOS开发之主题皮肤
- JS判断特殊字符
- 壁虎程序员_java.lang.String类
- 并发
- UVA - 10131 Is Bigger Smarter? 最长上升子序列