UVa 116 - Unidirectional TSP

来源:互联网 发布:免手机号注册qq 知乎 编辑:程序博客网 时间:2024/06/08 13:40

动态规划解决

#include <iostream> #include <sstream>#include <string> #include <cstdio> #include<iostream>#include<vector>#include<algorithm>#include<string>using namespace std;#define INF 1<<20;int main() {int arr[][6]={{3,4,1,2,8,6},{6,1,8,2,7,4},{5,9,3,9,9,5},{8,4,1,3,2,6},{3,7,2,8,6,4}};int next[5][6] ={-1};int d[5][6];int m = 5,n=6;int first = 0;int ans = INF;for(int j=n-1;j>=0;j--){for(int i=0;i<m;i++){if(j==n-1) d[i][j] = arr[i][j];else{int rows[3] = {i,i-1,i+1};if(i==0) rows[1] = m-1;if(i==m-1) rows[2] = 0;sort(rows,rows+3);d[i][j] = INF;for(int k=0;k<3;k++){int v = d[rows[k]][j+1]+arr[i][j];if(v<d[i][j]){d[i][j]=v;next[i][j] = rows[k];}}}if(j==0 && d[i][j]<ans){ans = d[i][j];first = i;}}}for(int i=next[first][0],k=1;k<n;i=next[i][k],k++){cout<<"("<<i<<","<<k<<")->";}cout<<ans<<endl;} 


0 0
原创粉丝点击