素数环。。DFS暴搜。。
很奇怪为什么用C++交总提示我SQRT调用不明确。。
还是用G++提交吧。。
#include<stdio.h>
#include<string.h>
#include<math.h>
int visited[21];
int num[21];
int n;
void print()
{
for (int i=0; i<n; i++) {
printf("%d",num[i]);
if(i!=n-1) putchar(' ');
}
putchar('\n');
}
int sushu(int p)
{
for (int i=2; i<=sqrt(p); i++)
if (p%i==0) return 0;
return 1;
}
void dfs(int t)
{
if(t==n) {print(); return;}
for (int i=2; i<=n; i++) {
if (!visited[i] && sushu(num[t-1]+i) && ((t==n-1)? sushu(1+i):1)) {
visited[i]=1;
num[t]=i;
dfs(t+1);
visited[i]=0;
}
}
}
int main()
{
int Case=1;
num[0]=1;
while (~scanf("%d",&n)) {
memset(visited, 0, sizeof(visited));
visited[1]=1;
printf("Case %d:\n",Case++);
dfs(1);
putchar('\n');
}
}
浙公网安备 33010602011771号