7-4素数环 uva 524

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;

int ans[1000];
int vis[1000];

bool  issushu(int n)
{
    for(int i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)return false;
    }
    return true;
}
void dfs(int n,int cur)
{
    if(cur==n&& issushu(1+ans[cur-1] ) )
    {
        for(int i=0;i<n;i++)
            if(i==0)printf("%d",ans[i]);
            else  printf(" %d",ans[i]);
            printf("\n");
    }

    for(int i=2;i<=n;i++)
    {
        if( !vis[i] && issushu(i+ans[cur-1]) )
        {
            ans[cur]=i;
            vis[i]=1;
            dfs(n,cur+1);
            vis[i]=0;//一定要取消标记 不然肯错
        }
    }
}
int main()
{

    int n;int cas=0;
    while(scanf("%d",&n)==1)
    {   if(cas!=0)cout<<endl;
        memset(ans,0,sizeof(ans));
        memset(vis,0,sizeof(vis));
        ans[0]=1;
        printf("Case %d:\n",++cas);
        dfs(n,1);

    }
}

猜你喜欢

转载自www.cnblogs.com/bxd123/p/10350208.html
今日推荐