hdoj1016(深度遍历)

来源:互联网 发布:如果希特勒赢了 知乎 编辑:程序博客网 时间:2024/06/07 20:48

考察深度遍历。(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[n]);}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;}


原创粉丝点击