您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 蛮力法求全排列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;}
本文标题:蛮力法求全排列TSP
链接地址:https://www.777doc.com/doc-5122824 .html