您的位置:首页 > 其它

hud2181----哈密顿绕行世界问题(搜索)

2012-09-16 11:10 337 查看
直接搜索就行了

View Code

//Accepted    2181    0MS    216K    802 B    G++
#include <stdio.h>
#include <string.h>

int map[21][21];
int useif[21];
int ans[21];
int cases;
int m;
void solve(int n,int d)
{
if(d > 20)
{
if(map[m][ans[20]] == 0)
return ;
++cases;
printf("%d:  ",cases);
for(int i = 1; i <= 20; ++i)
printf("%d ",ans[i]);
printf("%d\n",m);
return ;
}
for(int i = 1; i <= 20; ++i)
{
if(map
[i] == 1 && useif[i] == 0)
{
ans[d] = i;
useif[i] = 1;
solve(i,d+1);
useif[i] = 0;
}
}
}

int main(void)
{
int x,y,z;
for(int i = 1; i <= 20 ; ++i)
{
scanf("%d%d%d",&x,&y,&z);
map[i][x] = 1;
map[i][y] = 1;
map[i][z] = 1;
}
while(scanf("%d",&m)==1 && m)
{
cases = 0;
memset(useif,0,sizeof(useif));
ans[1] = m;
useif[m] = 1;
solve(m,2);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: