Prime Ring Problem UVA - 524

版权声明:欢迎转载!拒绝抄袭. https://blog.csdn.net/qq_36257146/article/details/88357826
#include <iostream>
#include <bits/stdc++.h>
#define maxn 17
using namespace std;
int a[maxn];
bool visited[maxn];
int n;

bool check(int c,int d)
{
    int t = c+d;
    int flag = 0;
    for(int i = 2;i<=sqrt(t);i++)
    {
        if(t%i == 0)
        {
            return false;
        }

    }
    return true;
}

void solve(int cur)
{
    if(cur == n && check(a[cur-1],a[0]))
    {
        for(int i = 0;i<n-1;i++)
            cout<<a[i]<<" ";
        cout<<a[n-1]<<endl;
    }
    else
    {
        for(int i = 2;i <=n; i++)
        {
            if(!visited[i]&&check(a[cur-1],i))
            {
                a[cur] = i;
                visited[i] = 1;
                solve(cur+1);
                visited[i] = 0;
            }
        }
    }
}

int main()
{
    int kase = 0;
    while(cin>>n&&n)
    {
        if(kase++) cout<<endl;
        printf("Case %d:\n",kase);
        memset(visited,0,sizeof(visited));
        a[0] = 1;
        visited[1] = 1;
        solve(1);
        //printf("\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36257146/article/details/88357826