多段图的最短路问题——单向TSP问题

原创 2016年08月30日 16:46:42

    给一个m行n列的整数矩阵,从第一列的任意位置出发每次往右,右上或右下走一格,最终达到最后一列。要求经过的整数这和最小。整个整数矩阵是环形的,多解时输出字典序最小的。


分析:运用递推的方式从最后一列开始到第一列结束。

                   d[i][j]表示从第i行第j列开始到最后一列的最小开销。


代码如下:


int  ans=INF,first=0;

for(int j=n-1;j>=0;j--)

for(int i=0;i<n;i++){

if(j==n-1) d[i][j]=a[i][j];

else{

  int row[3]={i-1,i,i+1};

  if(i==0) row[0]=m-1;

  if(i==m-1) row[2]=0

  sort(row,row+3);

  d[i][j]=INF;

  for(int k=0;k<3;k++){

  v=d[row[k]][j+1]+a[i][j];

  if(v<d[i][j])  {d[i][j]=v;next[i][j]=row[k];}

 }

}//end else;

if(j==0&&d[i][j]<ans){ans=d[i][j];first=i;} /寻找第一列的最小值

}


printf("%d",i+1);

i=next[i][0];

for(int j=1;j<n;j++){

 printf("%d",i+1);

 i=next[i][j];

}


prmtf("%d",ans);

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数学建模常用Matlab/Lingo/c代码总结系列——旅行商TSP问题

Lingo代码: MODEL: SETS: CITY / 1.. 6/: U; ! U( I) = sequence no. of city; LINK( CITY, C...

紫书动规 例题9-4 UVA - 116 Unidirectional TSP 多段图的最短路 dp

题目链接:https://vjudge.net/problem/UVA-116题意:题解:dp[i][j]:= 从(i,j)出发到最后一列的最小开销 因为字典序最小,所以每次往前一列转移,都要先从这...

AI实验之——TSP问题

  • 2010-06-03 21:04
  • 148KB
  • 下载

UVA - 116 Unidirectional TSP(dp+多段图的最短路)

题意: 给一个n行m列的整数矩阵,从第一列任何一个位置出发每次往右、右上或右下走一格,最终到达最后一列。要求经过的整数之和最小。整个矩阵是环形的,即第一行的上一行是最后一行,最后一行的下一行是第一行...

例题9-4 UVa116 Unidirectional TSP(DP:多段图的最短路)

题意: 看白书 要点: 一共三种决策:直行,右上,右下。那么就递推,注意题目中可以从第一列的任意一行出发,而且是环形的,最后还得按字典序输出路径,路径输出就直接用数组记录,因为是倒序递推,所以正...

Uva - 116 - Unidirectional TSP(多段图的最短路,动态规划)

Background Problems that require minimum paths through some domain appear in many different are...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)