老坛秃菜 2022-12-02 12:07 采纳率: 0%
浏览 1

回溯法如何输出一个解后便停止

问题遇到的现象和发生背景

如何得到答案的一个解便停止??使用回溯法但是永远是把所有的解全部输出,题目要求只输出一个解

用代码块功能插入代码,请勿粘贴截图
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define N 20
int p[N];
int a[N];
int Is_prime(int a1,int a2)
{
    int sum =  a1+ a2;
    for (int i = 2; i < sum / 2; i++)
    {
        if ((sum % i) == 0)
        {
            return 0;
        }
    }
    return 1;
}
int Can_place(int a[], int t, int i)
{
    for (int j = 0; j < t; j++)
    {
        if (Is_prime(a[i], p[t-1]) == 0 || p[j] == a[i])
        {
            return 0;
        }
    }
    if (t == N - 1)
    {
        if (Is_prime(a[i], p[0]) == 0)
        {
            return 0;
        }
    }
    return 1;
}

void DFS_ssh(int a[], int t)
{
    if (t >= N) 
    {
        for (int i = 0; i < N; i++)
        {
            printf("%d ",p[i]);
        }
    }
    else
    {
        for (int i = 0; i < N; i++)
        {
            if (Can_place(a, t, i))
            {
                p[t] = a[i];
                DFS_ssh(a, t + 1);
                p[t] = 0;
            }
        }
    }
}

int main()
{
    for (int i = 0; i < N; i++)
    {
        a[i] = i + 1;
    }
    DFS_ssh(a,0);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-12-02 14:14
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 12月2日

悬赏问题

  • ¥15 使用MATLAB进行余弦相似度计算加速
  • ¥15 服务器安装php5.6版本
  • ¥15 我想用51单片机和数码管做一个从0开始的计数表 我写了一串代码 但是放到单片机里面数码管只闪烁一下然后熄灭
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题
  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
  • ¥15 arcgis处理土地利用道路 建筑 林地分类
  • ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
  • ¥100 寻会做云闪付tn转h5支付链接的技术
  • ¥15 DockerSwarm跨节点无法访问问题
  • ¥15 使用dify通过OpenAI 的API keys添加OpenAI模型时报了“Connection Error”错误