hdu1016

来源:互联网 发布:linux 格式化命令 编辑:程序博客网 时间:2024/06/02 19:42
#include <stdio.h>#include<string.h>#define N 50int n,used[N],buffer[N],ans,flag,is_prime[N];void dfs(int cur){int i;used[1]=1;if(cur>n&&is_prime[buffer[1]+buffer[n]])//正确解,输出{if(!flag){flag=1;printf("Case %d:\n",ans);}for(i=1;i<n;i++)printf("%d ",buffer[i]);printf("%d\n",buffer[n]);}else{for(i=2;i<=n;i++)//从头开始搜索{buffer[cur]=i;if(!used[i]&&is_prime[buffer[cur-1]+buffer[cur]]){used[i]=1;dfs(cur+1);//向下继续搜索used[i]=0;//向上回溯}}}}int main (){int i;memset(is_prime,1,sizeof(is_prime));for(i=6;i<40;i++){if(i%2==0||i%3==0||i%5==0)is_prime[i]=0;}is_prime[4]=0;ans=0;while(scanf("%d",&n)!=EOF){memset(used,0,sizeof(used));flag=0;ans++;buffer[1]=1;dfs(2);printf("\n");}return 0;}

原创粉丝点击