您的位置:首页 > 其它

hdoj1016(深度遍历)

2017-05-20 21:41 148 查看
考察深度遍历。(visited[]数组)

#include<stdio.h>
#include<iostream>
using namespace std;
int n,a[21];
bool vis[21];
int prime_sum[12]={2,3,5,7,11,13,17,19,23,29,31,37};
bool prime(int x)
{
for(int i=0;i<12;i++)
{
if(prime_sum[i]==x)return true;
}
return false;
}
void prin()
{
for(int i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d",a
);
}
bool dfs(int pre,int post,int num)
{
if(!prime(pre+post))return false;
a[num]=post;
if(num==n&&prime(post+1))
{
prin();
printf("\n");
return true;
}
vis[post]=false;
for(int i = 2;i<=n;i++)
if(vis[i]&& dfs(post,i,num+1))break;
vis[post] = true;
return false;
}
int main()
{
int count;
count = 1;
while(scanf("%d",&n)!=EOF)
{
for(int i = 1; i <= n; i++)
vis[i] = true;
a[1] = 1;
printf("Case %d:\n",count++);
if(n==1)printf("1\n");
for(int i = 2;i<=n;i++)
dfs(1,i,2);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: