NYOJ--488--dfs--素数环

来源:互联网 发布:哈尔滨金蝶软件 编辑:程序博客网 时间:2024/05/16 18:41
/*Name: NYOJ--488--素数环Author: shen_渊 Date: 15/04/17 15:30Description: 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;}}}}


0 0