您的位置:首页 > 其它

poj 2245lotto(dfs)

2014-12-19 23:21 204 查看
     A题的感觉是真爽啊,昨天大致看了看这道题目,觉得挺不容易的,今天仔细想了想,没想到还挺简单的,经典的深度优先遍历,加回溯,好像深度优先遍历基本上都会跟回溯连在一起诶,是我理解错了么?难道深度优先遍历本身就有回溯这部分?我觉得深度优先遍历就是遍历到最后的,要是没有找到答案,或者还想找其他的答案,就要进行回溯了,这题不解释了,好好想想吧,挺简单的,明天考四级了,英语听力其实压根听不懂诶,对于河南考生,英语听力有点坑,我们高考可是不考的啊

,没事儿,明天好好做就行,没那么难过吧,好好考,发挥出应有的水平就好

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n,x,visit[20],b[20],a[20];
void dfs(int cur)
{
if(x==7)
{
for(int i=1;i<=6;i++)
{
printf("%d",b[i]);
if(i!=6)
printf(" ");
}
printf("\n");
}
else
{
for(int k=cur;k<=n;k++)
{
if(!visit[k])
{
visit[k]=1;
b[x++]=a[k];
dfs(k+1);
visit[k]=0;
x--;
}
}
}
}
int cmp(const void *p,const void *q)
{
return *(int *)p-*(int *)q;
}
int main()
{
int i;
while(scanf("%d",&n),n!=0)
{
memset(visit,0,sizeof(visit));
x=1;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
qsort(a+1,n,sizeof(a[1]),cmp);
dfs(1);
printf("\n");

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