回溯法-排列树-旅行商(TSP)问题

题意:

有一个推销员,要到n个城市推销商品,他要找出一个包含所有n个城市的具有最短路程的环路。(最后回到原来的城市)示例:从城市1出发经过所有城市后回到城市1,要使总路程最短。

回溯法-排列树-旅行商(TSP)问题_第1张图片

代码:

/**
   @回溯-旅行商(TSP)问题
*/
#include
#include
#define MAX 100
using  namespace std;
int n;                               //城市个数
int a[MAX][MAX];                   //城市间距离
int x[MAX];                       //记录路径
int bestx[MAX]  = {0};           //记录最优路径
int bestp = 63355;              //最短路径长
int cp = 0;                    //当前路径长
void backpack(int t){
     if(t>n){
        if((a[x[n]][1])&&(a[x[n]][1]+cp>n;      //顶点数
    for(int i = 1;i<=n;i++){
         x[i] = i;
    }
    cout<<"输入城市之间的距离(0表示城市间不通):"<>a[i][j];
        }
    }
    backpack(2);
    cout<<"最少旅行费用为: "<
回溯法-排列树-旅行商(TSP)问题_第2张图片

你可能感兴趣的:(数据结构与算法)