编写程序,从1到9这10个数中选出6个数围成一圈,使得相邻两个数之和都是质数
来源:百度知道 编辑:UC知道 时间:2024/06/16 02:47:57
#include<stdio.h>
int primes[]={0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0};
int a[17],n;
short sign[17];
void dfs(int cur)
{
int i;
if(cur==n)
{
for(i=1;i<=n;i++)
if(!sign[i]&&primes[a[cur-1]+i])
{
a[n]=i;
break;
}
if(i<=n)
{
if(primes[a[n]+1])
{
for(i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\n",a[n]);
return ;
}
else
return;
}
else
return;
}
for(i=1;i<=n;i++)
if(!sign[i]&&primes[a[cur-1]+i])
{
sign[i]=1;
a[cur]=i;
dfs(cur+1);
sign[i]=0;
}
return;
}
int main()
{
int i;
int k=1;
n=6;
for(i=1;i<=n;i++)
sign[i]=0;
a[1]=1;
sign[1]=1;
dfs(2);
return 0;