HDU1016(DFS)

来源:互联网 发布:npt2寸管螺纹编程 编辑:程序博客网 时间:2024/06/06 12:32

题目:Prime Ring Problem

 

#include <stdio.h>#include <string.h>#define N 105int n;int a[25];bool visited[25];bool prime[N];void isprime(){    int i,j;    memset(prime,true,sizeof(prime));    for(i=2;i<N;i++)    {        for(j=i+i;j<N;j+=i)        {            prime[j]=false;        }    }}void DFS(int v){    int i;    if(v==n+1&&prime[a[n]+1])    {        for(i=1;i<=n;i++)            printf("%d%c",a[i],i == n ? '\n':' ');    }    for(i=2;i<=n;i++)    {        if(!visited[i]&&prime[i+a[v-1]])        {            a[v]=i;            visited[i]=true;            DFS(v+1);            visited[i]=false;        }    }}int main(){    int k=0;    isprime();    while(~scanf("%d",&n))    {        k++;a[1]=1;        memset(visited,false,sizeof(visited));        printf("Case %d:\n",k);        DFS(2);        puts("");    }}


 

原创粉丝点击