旅行售货员问题 回溯法 与 01背包的区别
2013-05-09 21:24
260 查看
#include<stdio.h>//01背包回溯法是拿一个少一个,顺序无关,属于子集树 #include<string.h>//售货员问题是与顺序有关,属于排列树,用一个标志数组标志就可以 #define MAX_INT 1000; int mg[100][100],final[100],dis=0,totaldis=1000,n; void TSP(int s,int t,int fs) { if(t==n) { if(dis+mg[s][fs]<totaldis) { totaldis=dis+mg[s][fs]; return ; } } final[s]=1; for(int i=1;i<=n;i++) { if(i!=s&&!final[i]&&mg[s][i]+dis<totaldis) { dis+=mg[s][i]; TSP(i,t+1,fs); dis-=mg[s][i]; } } final[s]=0; } int main() { int i,j,sta; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { scanf("%d",&mg[i][j]); } } scanf("%d",&sta); TSP(sta,1,sta); printf("%d\n",totaldis); memset(mg,0,sizeof(mg)); memset(final,0,sizeof(final)); dis=0,totaldis=0; } return 0; } /* 4 1000 30 1 3 30 1000 2 4 1 2 1000 60 3 4 60 1000 1 答案:10 */
相关文章推荐
- 01背包问题-----回溯法的解决方案
- 01背包问题(用c语言实现)-回溯法求解
- C语言使用回溯法解旅行售货员问题与图的m着色问题
- 01背包问题(回溯法)python实现
- 旅行售货员问题-回溯法
- 旅行售货员问题(回溯法搜索排列树)
- 算法java实现--回溯法--旅行售货员问题--排列树
- 旅行售货员问题(回溯法实现)
- 旅行售货员问题(回溯法)
- 01背包问题
- 背包(01背包、完全背包、多重背包)问题总结
- hdu 1574 RP问题 dp 01背包
- 01背包与完全背包问题
- 旅行售货员问题--c语言
- 01背包问题【简单背包,UVA624】
- 背包问题:01 完全 多重
- 01 背包问题的另类解法
- 01背包问题总结
- 01背包问题
- 51Nod 1085 背包问题(01)