HDU 1016 Prime Ring Problem

来源:互联网 发布:c语言编译器安卓版 编辑:程序博客网 时间:2024/06/06 01:27

http://acm.hdu.edu.cn/showproblem.php?pid=1016

#include <iostream>#include <stdio.h>#include <String.h>using namespace std;int flag[25];int n;int sum(int k){    for(int i=2;i*i<=k;i++){        if(k%i==0){            return 0;        }    }    return 1;}void dfs(int a[22],int k){    if( k==n){        if( sum(a[0]+a[n-1])==1 ){            for(int i=0;i<n-1;i++){                printf("%d ",a[i]);            }            printf("%d\n",a[n-1]);        }        return ;    }    for(int i=1;i<=n;i++){        if( flag[i]==0 && sum(a[k-1]+i)==1 ){            flag[i]=1;            a[k]=i;            dfs(a,k+1);            flag[i]=0;        }    }    return ;}int main(){    int ca=1;    while(scanf("%d",&n)!=EOF){        int a[22];        memset(flag,0,n+1);        memset(a,0,n+1);        a[0]=1;        flag[1]=1;        printf("Case %d:\n",ca++);        dfs(a,1);        putchar(10);    }    return 0;}
0 0
原创粉丝点击