#include <iostream>
using namespace std;
bool road[8][8]={{0,1,1,0,0,0,1,0}
,{1,0,1,0,0,0,0,1}
,{1,0,0,1,0,1,0,0}
,{0,0,1,0,1,0,0,0}
,{0,0,0,1,0,1,0,0}
,{0,0,1,0,1,0,1,0}
,{1,0,0,0,0,1,0,1}
,{0,1,0,0,0,0,1,0}
};
int x1[8]={0};
void HaMiTonian(int );
void NextValue(int );
void display1();
int main()
{
x1[0]=1;
HaMiTonian(1);
system("pause");
return 0;
}
void HaMiTonian(int m)
{
if(m>7) return ;
L: NextValue(m);
if(x1[m]==0)
return ;
if(m==7&&road[x1[7]-1][0])
display1();
else
HaMiTonian(m+1);
goto L;
}
void NextValue(int k)
{
int j;
l:x1[k]=(x1[k]+1)%9;
if(x1[k]==0)
return ;
if(road[x1[k-1]-1][x1[k]-1])
{
for( j=0;j<k;j++)
if(x1[j]==x1[k]) goto l;
return ;
}
else goto l;
}
void display1()
{
for(int i=0;i<8;i++)
cout<<x1[i]<<" ";
cout<<"1"<<endl;
}
无向图回路算法
最新推荐文章于 2021-12-15 23:29:31 发布