用C语言 输入1-20的整数n把1到n的n个整数摆成一个环使得该环上任意相邻的两个数之和为素数求出所有可能组
来源:百度知道 编辑:UC知道 时间:2024/06/04 06:58:59
首先很容易得到一个结论,就是当N为奇数的时候,这样的环是不存在的。因为肯定至少存在一对相邻的奇数,而两个奇数的和肯定是一个偶数,那就肯定不符合要求。
然后很容易得到另一个结论,就是每一个奇数相邻的两个数,必然是偶数。这样的话,那奇数和偶数就必须相隔排列。
#include <iostream>
using namespace std;
const int N=100;
int matrix[N][N],visited[N],circle[N],n;
bool isprime(int num)
{
for(int i=2;i<num;++i)
if(num%i==0) return false;
return true;
}
void DFS(int deep,int num)
{
int i;
if(deep>n)
{
if(matrix[num][1])
{
for(i=0;i<n;++i) cout<<circle[i]<<' ';
cout<<endl;
return;
}
}
for(i=deep&1;i<=n;i+=2)
{
if(matrix[num][i]&&!visited[i])
{
visited[i]=1;circle[deep-1]=i;
DFS(deep+1,i);
visited[i]=0;
}
}
}
int main()
{