素数环题目
从1到n这n个数摆成一个环,要求相邻的两个数的和是一个素数,罗列所有排列
输入格式
输入一个正整数n(n<=10)
输出格式
一行输出一种排列情况,数字间用空格隔开
输入输出样例
输入 #1复制
4
输出 #1复制
1 2 3 4
1 4 3 2
2 1 4 3
2 3 4 1
3 2 1 4
3 4 1 2
4 1 2 3
4 3 2 1
错误代码(求找错)
#include<bits/stdc++.h>
using namespace std;
int n;
int a[12];
int b[12];
bool shu[30];
bool pd(int x,int y)
{
int i;
for(i = x+y;i >= (x+y)/2;i++)
{
if(i%2 == 0)
{
return false;
}
}
return true;
}
void dfs(int step)
{
if(step == n+1)
{
for(int i =1;i <= n;i++)
{
cout << a[i] <<" ";
}
cout <<endl;
return;
}
for(int i =1;i <= n;i++)
{
if(shu[i] == 0&&pd(a[i],a[i+1]) == 1)
{
a[step] = b[i-1];
shu[i] = 1;
dfs(step+1);
shu[i] = 0;
}
}
}
int main()
{
cin >> n;
for(int i =1;i <= n;i++)
{
a[i] = i;
b[i] = i;
}
dfs(1);
return 0;
}