蛮力法求全排列TSP

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

蛮力法求出TSP问题路线的全排列:#includeiostreamusingnamespacestd;intfactorial(intn)//求阶乘,用来判断有多少个排列数{inti,sum=1;for(i=1;i=n;i++){sum*=i;}returnsum;}intmain(){inta[10];intn,i;cinn;for(i=1;i=n;i++){cina[i];}ints,k;s=factorial(n);for(k=1;k=s;k++)//从小到大依次输出每次排列情况{for(i=1;in;i++){couta[i];}couta[i]endl;inti,j;i=n;while(a[i-1]a[i])//从n往前,两两比较,找到第一个出现的,前面的数比后面的小的,记下它的位置{i=i-1;}i=i-1;j=n;while(a[i]a[j])//从n往前,找到第一个比上面找到的那个数大的{j=j-1;}swap(a[i],a[j]);//交换上面两个数字的值intt;intp;t=i+1;p=n;inttemp;while(tp)//从上面找到的第一数字的位置的后一个开始到末尾n,逆置整个数列,即得到了次小的排练序列{swap(a[t],a[p]);t++;p--;}}return0;}

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功