老坛秃菜 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 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥30 电脑误删了手机的照片怎么恢复?
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错
  • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办
  • ¥15 有人懂怎么做大模型的客服系统吗?卡住了卡住了