#include"iostream"
using namespace std;
int n;
int a[50];
int visit [50];
int isprime(int k)
{
int n=sqrt(double(k));
int i;
for(i=2;i<=n;i++)
if(k%i==0) return 0;
return 1;
}
void dfs(int count)
{
if(count==n&&isprime(a[n-1]+a[0]))
{
int i;
for(i=0;i<n-1;i++)
cout<<a[i]<<" ";
cout<<a[i]<<endl;
}
else
{
int i;
for(i=2;i<=n;i++)
{
if(!visit[i]&&isprime(i+a[count-1]))
{
a[count]=i;
visit[i]=1;
dfs(count+1);
visit[i]=0;
}
}
}
}
int main()
{
//freopen("a.txt","r",stdin);
int ks=1;
a[0]=1;
while(cin>>n)
{
memset(visit,0,sizeof(visit));
cout<<"Case "<<ks++<<":\n";
dfs(1);
cout<<endl;
}
return 0;
}
HDOJ 1016 dfs
最新推荐文章于 2018-12-11 23:00:18 发布