您的位置:首页 > 其它

【深度搜索】还是不是很理解~

2012-01-17 15:49 218 查看

题目地址:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1004&cid=14229&hide=1&problem=ProblemD

#include<iostream>

usingnamespacestd;

intmap[30][5];

inta[30];

intm;

intnum;

boolmark[30];

intsum=0;

intcmp(constvoid*a,constvoid*b)

{

return*(int*)a-*(int*)b;

}

voiddfs(intx,intdep)

{

inti;

if(dep==19)//深度为n-1

{

intflag=0;

for(intk=1;k<=3;k++)

{

if(map[a[19]][k]==m)

flag=1;

}

if(flag)

{

printf("%d:",num);

num++;

for(intj=0;j<20;j++)

printf("%d",a[j]);

printf("%d\n",m);

return;

}

elsereturn;

}

for(i=1;i<=3;i++)

if(!mark[map[x][i]])

{

mark[map[x][i]]=1;

a[dep+1]=map[x][i];

dfs(map[x][i],dep+1);

mark[map[x][i]]=0;

}

return;

}

intmain()

{

inti,j;

for(i=1;i<=20;i++)

{

for(j=1;j<=3;j++)

scanf("%d",&map[i][j]);

//qsort(map[i]+1,3,sizeof(map[i][1]),cmp);

}

while(scanf("%d",&m)!=EOF)

{

memset(mark,0,sizeof(mark));

num=1;

if(m==0)break;

mark[m]=1;//初始化

a[0]=m;

dfs(m,0);

}

return0;

}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐