hdu 1016 Prime Ring Problem

来源:互联网 发布:python nltk 中文 编辑:程序博客网 时间:2024/06/06 05:46

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int dp[30],vis[100],N;int check(int x){    for(int i=2;i<x;i++)        if(x%i==0)  return 0;        return 1;}void dfs(int n,int num){    int i;    dp[n]=num;vis[num]=1;//n是记录存入的第几个数,num代表的是我下一个要搜的起始点&&把它标记    if(n==N)//判断是否输出    {        if(check(dp[n]+dp[1]))        {            printf("1");            for(i=2;i<=N;i++)              printf(" %d",dp[i]);              printf("\n");        }        return;    }    for(i=1;i<=N;i++)    {        if(!vis[i]&&check(dp[n]+i))        {            dfs(n+1,i);            vis[i]=0;        }    }    return;}int main(){    int ccase=1;    while(scanf("%d",&N)!=EOF)    {        printf("Case %d:\n",ccase++);        memset(vis,0,sizeof(vis));        dfs(1,1);        printf("\n");    }    return 0;}


原创粉丝点击