take off~~~ 2024-07-04 20:51 采纳率: 0%
浏览 20
已结题

一道蓝桥杯的题,请问我错在哪里

img

以上是题目,以下是我的作答

img


我的思路是,用dfs。因为有n种糖果,不同糖果有各自数量,可用数组a[]表示。用循环模拟出,每次从剩下的n-1种糖果中吃一个(因为不能与上次相同,所以每次从剩下n-1种里面选),dep表示已经吃的糖果,x表示上次吃的种类,既a几,每次模拟后,dep+1,被吃的种类数量减1。若剩下的n-1种中,都没有糖果了,既数量都为0了,说明此种方法不可行。若dep等于n,说明可行。

这样做,用dev c++编译不通过,而且用3 4 1 1这组测试数据输出了Yes,为什么?我错在哪

  • 写回答

32条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-04 20:51
    关注
    获得0.30元问题酬金

    引自免费微信小程序:皆我百晓生

    你的代码有一些逻辑错误和语法错误。我会按照你的思路来帮你纠正代码。

    首先,我们梳理一下问题的关键:我们需要检查是否存在一种方案,使得小蓝吃糖果时不会出现连续吃同一种糖果的情况。你的思路是使用深度优先搜索(DFS)来模拟这个过程。这是一个很好的思路,但需要确保逻辑正确。

    以下是修改后的代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    const int MAX = 1e6 + 9; // 常量定义没问题
    int a[MAX]; // 糖果数量的数组
    int n; // 糖果的种类数
    bool answer = false; // 用于标记是否存在可行方案
    
    bool dfs(int dep, int last) { // dep表示已经吃的糖果数量,last表示上次吃的糖果种类
        if (dep == n) return true; // 已经吃了n种糖果,找到了可行方案
        for (int i = 1; i <= n; i++) { // 遍历每种糖果
            if (i != last && a[i] > 0) { // 确保不与上次吃的相同且还有剩余
                a[i]--; // 吃这种糖果
                if (dfs(dep + 1, i)) return true; // 继续递归搜索
                a[i]++; // 恢复状态,回溯
            }
        }
        return false; // 所有糖果都尝试过,但没有找到可行方案
    }
    
    int main() {
        cin >> n; // 输入糖果的种类数
        for (int i = 1; i <= n; i++) { // 输入每种糖果的数量
            cin >> a[i];
        }
        if (dfs(0, 0)) { // 从第0种糖果开始尝试,上次吃的为第0种(不存在)
            answer = true;
        }
        if (answer) cout << "Yes"; // 如果找到可行方案,输出Yes
        else cout << "No"; // 否则输出No
        return 0; // 程序结束返回0
    }
    

    主要的修改点:

    1. dfs函数中增加了last参数来表示上次吃的糖果种类,以避免连续吃同一种糖果。
    2. main函数中调用dfs时,初始化为从第0种糖果开始尝试(实际上并不存在第0种糖果,只是为了方便回溯)。
    3. main函数结束时根据搜索结果输出答案。

    这样修改后的代码应该可以正确解决这个问题。你可以尝试使用这组数据(或其他测试数据)来验证代码的正确性。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月12日
  • 创建了问题 7月4日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见