HDU 2181 哈密顿绕行世界问题
这个就是一深搜,不解释,还有,测试数据太弱了。
#include<stdio.h>
#include<string.h>
int map[23][4],des[23],num[23],f,n;
void DFS( int p,int nu )
{
if( nu == 20 && ( map[p][1] == n || map[p][2] == n || map[p][3] == n ) )
{
printf( "%d: ",++f );
for( int i = 0; i < 20; ++i )
printf( "%d ",num[i] );
printf( "%d\n",n );
}
for( int i = 1; i <= 3; ++i )
{
int po = map[p][i];
if( !des[po] )
{
des[po] = 1;
num[nu] = po;
DFS( po,nu+1 );
des[po] = 0;
}
}
}
int main( )
{
for( int i = 1; i <= 20; ++i )
scanf( "%d%d%d",&map[i][1],&map[i][2],&map[i][3] );
while( scanf( "%d",&n ),n )
{
memset( des,0,sizeof( des ) );
f = 0;
num[0] = n;
des[n] = 1;
DFS( n,1 );
}
return 0;
}
本人还是新手 ,转载请注明来自Lvsi‘s home
浙公网安备 33010602011771号