您的位置:首页 > 其它

HDOJ 1016 dfs

2016-05-25 16:15 399 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: