您的位置:首页 > 其它

hdu 1016 Prime Ring Problem

2014-11-20 16:56 197 查看
这是一个搜索的题目,大意是让你输入一个0~20的整数n,这样你就有1,2,3,.......,n这些数,将它们围成一个·环,要求相邻两个数,代码如下:

#include<iostream>
#include<cstring>
using namespace std;
int print(int a[],int n)
{
int i;
for (i=0;i<n;i++)
{
if(i==n-1)
cout<<a[i]<<endl;
else cout<<a[i]<<' ';
}
return 0;
}
int prime(int num)
{
int i;
for(i=2;i<=num/2;i++)
{
if(num%i==0)
return 0;
}
return 1;
}
void dfs(int a[],int uset[],int n,int len)
{
if(len==n)
{
if(prime(a[0]+a[n-1]))
print(a,n);
}
else
{
int i;
for(int i=2;i<=n;i++)
{
if(uset[i]==0&&prime(a[len-1]+i))
{
a[len]=i;
uset[i]=1;
dfs(a,uset,n,len+1);
uset[i]=0;
}
}
}
}
int main()
{
int n,t=1;
while(cin>>n)
{
int uset[25],a[25]={1};
cout<<"Case "<<t<<":"<<endl;
t++;
memset(uset,0,sizeof(uset));
dfs(a,uset,n,1);
cout<<endl;
}
return 0;
}


的和是素数,输出所有的组合
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: