人生第一道自己写出来的搜索,感动哭了,思修翘的值了
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
#include <stdlib.h>
#include <cmath>
using namespace std;
int n,cnt;
bool vis[21];
int a[21];
int sushu(int a,int b)
{
int x=a+b,flag=0;
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0) flag=1;
}
if(flag==0) return 0;
else return 1;
}
void dfs(int step)
{
if(step==n+1)
{
if(sushu(1,a[step-1])==0)
{
for(int i=1;i<=n;i++)
{
if(i>1) cout<<" ";
cout<<a[i];
}
cout<<endl;
}
return;
}
for(int i=2;i<=n;i++)
{
if(vis[i]==0)
{
if(sushu(a[step-1],i)==0)
{
a[step]=i;
vis[i]=true;
dfs(step+1);
vis[i]=false;
}
}
}
}
int main()
{
int cnt=0;
while(cin>>n)
{
memset(vis,0,sizeof(vis));
memset(a,0,sizeof(a));
a[1]=1;
vis[1]=true;
cout<<"Case "<<++cnt<<":"<<endl;
dfs(2);
cout<<endl;
}
return 0;
}