/*
Name: NYOJ--488--素数环
Author: shen_渊
Date: 15/04/17 15:30
Description: DFS,素数打个表,37以内就够用了
*/
#include<cstring>
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
void dfs(int);
int n;
//int prime[25] = {2,3,5,7,11,13,17,19,23,29,31,37};学到下面一招
bool prime[45]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0};
int arr[22];
int vis[22];
int main()
{
// freopen("in.txt","r",stdin);
int m = 0;
while(cin>>n,n){
memset(arr,0,sizeof(arr));
memset(vis,0,sizeof(vis));
arr[1] = 1;
cout<<"Case "<<++m<<":\n";
if(n == 1)cout<<"1\n";
else if(n%2){
cout<<"No Answer\n";
}else{
dfs(2);
}
}
return 0;
}
void dfs(int ct){
if(ct == n+1 && prime[arr[n]+arr[1]]){
for(int i=1; i<=n; ++i)
cout<<arr[i]<<" ";
cout<<endl;
}else{
for(int i=2; i<=n; ++i){
if(!vis[i] && prime[arr[ct-1]+i]){
arr[ct] = i;
vis[i] = 1;
dfs(ct+1);
vis[i] = 0;
}
}
}
}
NYOJ--488--dfs--素数环
最新推荐文章于 2019-03-07 15:34:34 发布