UVA 116 Unidirectional TSP(dp)
2017-02-27 12:59
393 查看
分析:本题中每一列就是一个阶段,每个阶段有三种决策;状态方程dp[i][j]=min(dp[i-1][j+1],dp[i][j+1],dp[i+1][j+1]);dp(i,j)表示当前阶段到最后一列的最小消耗。
路径记录:用next1[][]来保存下一列行号。
AC代码:
#include<cstdio>
#include<algorithm>
#define INF 2147483647
using namespace std;
int dp[12][102];
int a[12][102];
int next1[12][102];
int main(){
int n,m;
while(scanf("%d%d",&n,&m)==2){
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&a[i][j]);
int T=INF,first=0;
for(int j=m-1;j>=0;j--){
for(int i=0;i<n;i++){
if(j==m-1)dp[i][j]=a[i][j];
else {
int rows[]={i,i-1,i+1};
if(i==0)rows[1]=n-1;
if(i==n-1)rows[2]=0;
sort(rows,rows+3);
dp[i][j]=INF;
for(int k=0;k<3;k++){
int tmp=a[i][j]+dp[rows[k]][j+1];
if(tmp<dp[i][j]){
dp[i][j]=tmp;
next1[i][j]=rows[k];
}
}
}
if(j==0 &&T >dp[i][j]){
T=dp[i][j];
first=i;
}
}
}
printf("%d",first+1);
int i=first;
for(int j=0;j<m-1;j++){
printf(" %d",next1[i][j]+1);
i=next1[i][j];
}
printf("\n%d\n",T);
}
return 0;
}
路径记录:用next1[][]来保存下一列行号。
AC代码:
#include<cstdio>
#include<algorithm>
#define INF 2147483647
using namespace std;
int dp[12][102];
int a[12][102];
int next1[12][102];
int main(){
int n,m;
while(scanf("%d%d",&n,&m)==2){
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&a[i][j]);
int T=INF,first=0;
for(int j=m-1;j>=0;j--){
for(int i=0;i<n;i++){
if(j==m-1)dp[i][j]=a[i][j];
else {
int rows[]={i,i-1,i+1};
if(i==0)rows[1]=n-1;
if(i==n-1)rows[2]=0;
sort(rows,rows+3);
dp[i][j]=INF;
for(int k=0;k<3;k++){
int tmp=a[i][j]+dp[rows[k]][j+1];
if(tmp<dp[i][j]){
dp[i][j]=tmp;
next1[i][j]=rows[k];
}
}
}
if(j==0 &&T >dp[i][j]){
T=dp[i][j];
first=i;
}
}
}
printf("%d",first+1);
int i=first;
for(int j=0;j<m-1;j++){
printf(" %d",next1[i][j]+1);
i=next1[i][j];
}
printf("\n%d\n",T);
}
return 0;
}
相关文章推荐
- UVa 116 - Unidirectional TSP(DP)
- uva 116 Unidirectional TSP (dp)
- UVA - 116 Unidirectional TSP(dp+多段图的最短路)
- uva 116 Unidirectional TSP (DP)
- uva 116 Unidirectional TSP (dp)
- 例题9-4 UVa116 Unidirectional TSP(DP:多段图的最短路)
- uva116 - Unidirectional TSP(简单DP)
- (UVA - 116)Unidirectional TSP(DP,多段图的最短路问题)
- uva116 - Unidirectional TSP(简单DP)
- uva 116(Unidirectional TSP)(DP)
- UVA 116 Unidirectional TSP (DP)
- UVa 116 Unidirectional TSP (DP)
- uva116 unidirectional TSP 单向TSP (DP)
- UVa 116:Unidirectional TSP(DP)
- UVa 116 - Unidirectional TSP(DP)
- UVa116 Unidirectional TSP(DP)
- UVA 116 Unidirectional TSP单向TSP(DP)
- 紫书动规 例题9-4 UVA - 116 Unidirectional TSP 多段图的最短路 dp
- uva 116 Unidirectional TSP 单向TSP 问题,经典dP(路径输出注意规划方向)
- dp uva-116-Unidirectional TSP