您的位置:首页 > 其它

hdu1016 Prime Ring Problem

2017-03-23 23:02 225 查看
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<set>
#include<queue>
#include<algorithm>
using namespace std;

int n, a[21], vid[21];

bool isP(int c)
{
int q = sqrt(c);
if (c == 2)
{
return true;
}
for (int i = 2; i <= q; i++)
{
if (c%i == 0)
return false;
}
return true;
}

void fun(int k)
{
if (k > n && isP(a[1]+a
))
{
for (int i = 1; i < n; i++)
{
cout<<a[i]<<" ";
}
cout<<a
<<endl;
}

for (int i = 2; i <= n; i++)
{
if (!vid[i] && isP(i+a[k-1]))
{
a[k] = i;
vid[i] = 1;
fun(k+1);
vid[i] = 0;
}
}
}

void init()
{
memset(vid, 0, sizeof(vid));
for (int i = 0; i <= n; i++)
a[i] = i;
}

int main()
{
int t = 1;
a[1] = 1;
while (cin>>n)
{
init();
printf("Case %d:\n", t);
fun(2);
cout<<endl;
t++;
}
}
开始用全排列做了,结果WA。。。。这个题让我明白了,全排列并不是递增或递减的。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: