UVA 116 Unidirectional TSP
来源:互联网 发布:网络写作平台推荐 编辑:程序博客网 时间:2024/05/29 00:30
题目描述:
点击打开链接
题意就是求从左走到右的最小加权和,允许边界穿越,并且要求输出路径,其实单看这些条件这题其实很简单,麻烦的是题目要求按字典序来输出,如果我们常规的顺着DP过去,在最后一列找到了最小加权,那我就需要倒着回去找路径,这样很难保证我们找到的路是字典序最小的,所以我们采取倒着DP回去,只要保证按照字典序小的方式搜回去,那么我们只需要在第一列找到最小的起点就可以保证这条路是字典序最小的一条路。
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<string>#include<stack>#include<queue>#include<algorithm>using namespace std;const int MAXM=110;const int INF=9999999;int n,m;int ma[MAXM][MAXM];int dp[MAXM][MAXM];int path[MAXM][MAXM];int main(){ while(scanf("%d%d",&n,&m)!=EOF) { for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) scanf("%d",&ma[i][j]); memset(path,0,sizeof(path)); memset(dp,INF,sizeof(dp)); for (int i=1;i<=n;i++) dp[i][m]=ma[i][m]; for (int j=m;j>1;j--) { for (int i=1;i<=n;i++) { int row[3]={i-1,i,i+1}; if (i==1) row[0]=n; if (i==n) row[2]=1; sort(row,row+3); for (int k=0;k<3;k++) { int tmp=dp[i][j]+ma[row[k]][j-1]; // printf("--%d\n",tmp); if (tmp<dp[row[k]][j-1]) { dp[row[k]][j-1]=tmp; // printf("-------%d",dp[row[k]][j-1]); path[row[k]][j-1]=i; } } } } //for (int i=1;i<=n;i++) //{ //for (int j=1;j<=m;j++) //printf("%d ",dp[i][j]); //printf("\n"); //} int st; int minm=INF; for (int i=1;i<=n;i++) if (dp[i][1]<minm) { minm=dp[i][1]; st=i; } //printf("%d\n",minm); for (int i=1;i<=m;i++) { if (i==m) printf("%d\n",st); else { printf("%d ",st); st=path[st][i]; } } printf("%d\n",minm); } return 0;}
阅读全文
0 0
- 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
- UVa 116 - Unidirectional TSP
- uva 116 Unidirectional TSP
- uva 116 Unidirectional TSP
- UVA-116 - Unidirectional TSP
- UVa 116 - Unidirectional TSP
- 欢迎使用CSDN-markdown编辑器
- C语言中EOF是什么意思?
- PHP入门资料
- 版本迭代
- Java的安装和配置环境变量
- UVA 116 Unidirectional TSP
- 深度学习中常用的调节参数
- PAT (Advanced Level) Practise 1050 String Subtraction (20)
- 解释型回答易争吵
- mac ssh出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- 线性卡尔曼公式推导证明注解(射影定理)
- 矩阵快速幂
- 【React Native 实战】商品分类
- 服务器两种高效的并发模式