//使用深度优先搜索
#include<stdio.h>
#include<math.h>
#include<string.h>
int n;
int num[25];
int visited[25];
bool isPrime(int n){
int flag=1;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0) {
flag=0;
break;
}
}
return flag;
}
void dfs(int pos){
if(pos==n+1) {
if(!isPrime(num[n]+1)) return;
else{
printf("1");
for(int i=2;i<=n;i++)
printf(" %d",num[i]);
printf("\n");
}
}
else{
for(int k=2;k<=n;k++){
if(!visited[k]&&isPrime(num[pos-1]+k)){
//printf("%d %d\n",pos,k);
num[pos]=k;
visited[k]=1;
dfs(pos+1);
visited[k]=0;
}
}
}
}
int main(){
int count=0;
while(~scanf("%d",&n)){
count++;
memset(num,0,sizeof(num));
memset(visited,0,sizeof(visited));
num[1]=1;
printf("Case %d:\n",count);
dfs(2);
printf("\n");
}
return 0;
}
hdu 1006(简单的深度优先搜索)
最新推荐文章于 2021-04-07 15:45:51 发布