输入正整数n,把整数1,2,3,……,n组成一个环,使得相邻的两个整数之和均为素数,输出时从整数1开始逆时针排序。同一个环应该恰好输出一次。n<=16.
输入
一个数n
输出
不确定行数,每行都为一种不相同的素数环的可能
样例输入
6
样例输出
1 4 3 2 5 6
1 6 5 2 3 4
woc好难啊
#include <bits/stdc++.h>
using namespace std;
int n,a[1001];
bool v[1001];
bool panduan(int x)
{
if(x<2) return 0;
int t=sqrt(x);
for(int i=2;i<=t;i++)
{
if(x%i==0) return false;
}
return true;
}
void dfs(int now)//和k一样
{
if(now==n+1)
{
if(panduan(a[1]+a[n])==true)
{
for(int i=1;i<=n;i++)
{
cout << a[i] << ' ';
}
}
cout << "\n";
return;
}
for(int i=2;i<=n;i++)
{
if(v[i]==false&&panduan(a[now-1]+i)==true)
{
v[i]=true;
a[now]=i;
dfs(now+1);
v[i]=false;
a[now]=0;
}
}
}
int main()
{
cin >> n;
for(int i=1;i<=n;i++)
{
a[i]=i;
}
dfs(2);
return 0;
}
标签:输出,int,样例,素数,bool,1001
From: https://www.cnblogs.com/momotrace/p/sushuhuan.html