加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C语言素数环 DFS +回溯

发布时间:2020-12-16 07:45:02 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #includecstdio#includecstringusing namespace std;int n;int a[21];int su[101]; int visit[200];void DFS(int c){ a[0]=1;// 初始为1 if(c==n!su[a

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#include<cstdio>
#include<cstring>
using namespace std;
int n;
int a[21];
int su[101];
 
int visit[200];
void DFS(int c)
{
    a[0]=1;// 初始为1
    if(c==n&&!su[a[0]+a[n-1]])//  如果 c==n  则结束     如果 第一个与最后一个和也为素数 则 输出
    {
        for(int i=0; i<n-1; i++)
            printf("%d ",a[i]);
        printf("%d",a[n-1]);
        printf("n");
    }
    else
    {
        for(int i=2; i<=n; i++)
            if(!visit[i]&&!su[i+a[c-1]])//  如果  次数 与前一个数相加为素数 且没被拜访过 则  赋值
            {
                a[c]=i;
                //printf("%d   ",a[c]);
                visit[i]=1;//  标记
                DFS(c+1);//  继续查找下一行
                visit[i]=0;//回溯
            }
    }
}
 
int main()
{
    int t=1;
    for(int i=2; i<9; i++)
        for(int j=i*i; j<50; j+=i)
            su[j]=1;//赋值 1-50 内的非素数为1
    while(scanf("%d",&n)!=EOF)
    {
        printf("Case %d:n",t++);
        memset(visit,sizeof(visit));
        DFS(1);
        printf("n");
 
    }
    return 0;
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读