1.素数环:从1到20这20个数摆成一个环,要求相邻的两个数的和是一个素数。
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
bool b[21]={
0};
int total=0,a[21]={
0};
int search(int); //回溯过程
int print(); //输出方案
bool pd(int,int); //判断素数
int main()
{
search(1);
cout<<total<<endl; //输出总方案数
}
int search(int t)
{
int i;
for (i=1;i<=20;i++) //有20个数可选
if (pd(a[t-1],i)&&(!b[i])) //判断与前一个数是否构成素数及该数是否可用
{
a[t]=i;
b[i]=1;
if (t==20) {
if (pd(a[20],a[1])) print();}
else search(t+1);
b[i]=0;
}
}
int print</