下面是源程序,用 Dev C++直接运行,如果用 VC 或 Visual Studio .Net 2003/2005
请删除最下面的 SYSTEM 语句。本算法采用最简单的递归方式来解决一个 6*6 矩
阵描述的有向图的旅行商问题,算法复杂度为 O(n!)。
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct Set{
int path[6];
int length;
unsigned short s;
Set()
{
length=0;
s=0;
}
void equal(Set b)
{
length = b.length;
for(int i=0;i<length;i++)
path[i]=b.path[i];
s=b.s;
}
} set;
int c[6][6]=
{{0,10,20,30,40,50},
{12,0,18,30,25,21},
{23,19,0,5,10,15},
{34,32,4,0,8,16},
{45,27,11,10,0,18},
{56,22,16,20,12,0}};
void printU(set u)
{
for (int i=u.length-1;i>=0;i--)
{
cout<<"->"<<u.path[i]+1;
}
}
void setU(set &u,int i)
{
u.path[u.length++]=i;
u.s |= (1<<i);
}