Liukairui 2017-08-26 14:24 采纳率: 100%
浏览 798
已结题

大家帮忙看一下这个回溯哪里写错了

原题

素数环(Prime Ring Problem, UVa 524)
输入正整数n,把整数1, 2, 3,…, n组成一个环,使得相邻两个整数之和均为素数。 输出
时从整数1开始逆时针排列。 同一个环应恰好输出一次。 n≤16。
样例输入:
6 样
例输出:
1 4 3 2 5 6
1 6 5 2 3 4

我的代码

 #include <iostream>
#include <cstdio>
#include <math.h>
#include <cstring>
using namespace std;
int ans[20];
int n;
int used[20];

bool iss(int x)
{
int is=1;
int q;
q=floor(sqrt(x)+0.5);
for (int k=2;k<=q;k++)
    {
    if(x%k==0){is=0;break;}
    }
if(is==1)return true;
else return false;
}

void dfs(int cur)
{
//cout<<cur<<"     ";
if((cur==n)&&(iss(ans[cur-1]+ans[0])))
    {
    for(int k=0;k<n-1;k++)cout<<ans[k]<<",";
    cout<<ans[n-1]<<"\n";
    }

else for(int i=2;i<=n;i++)
    {if(used[i]==1)continue;
    else if(iss(ans[cur]+i)){ans[cur]=i;used[i]=1;dfs(cur+1);used[i]=0;}
    }
}

int main()
{
cin>>n;
memset(used,0,sizeof(used));
ans[0]=1;
used[1]=1;
dfs(1);
system ("pause");
return 0;
}

输入6
输出
1,4,3,6,5,2
请按任意键继续. . .

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-08-27 15:15
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀