hdu1016(dfs)

View Code
#include"iostream"
using namespace std;
int a[1001],b[1001];
int used[1001];
int n;
int i,j,q,t;

void Init()
{
for(i=1;i<40;i++) b[i]=1;
for(i=2;i<40;i++)
{
for(j=2;j<40;j++)
b[i
*j]=0;
}
}

void dfs(int x, int y)
{
if(y == n)
{
if( b[x+1] )
{
a[n]
=x;
cout
<<"1 ";
for(q=2; q<=n; q++)
{
cout
<<a[q];
if(q!=n) cout<<" ";
}
cout
<<endl;
}
}

for(int p=2;p<=n;p++)

if(b[x+p] && used[p]==0)
{
a[y]
=x;
used[p]
=1;
dfs(p,y
+1);
used[p]
=0;
}
}
int main()
{
Init();
int k=0;
while(cin>>n)
{
memset(used,
0, sizeof(used));
used[
1]=1;
a[
1]=1;
cout
<<"Case "<<++k<<":"<<endl;
dfs(
1,1);
cout
<<endl;
}
return 0;
}
原文地址:https://www.cnblogs.com/FCWORLD/p/2042261.html