2401_83577908 2024-05-08 23:28 采纳率: 82.6%
浏览 1

这段在qt中的cpp代码应该如何修改呢

这段代码出现了报错,可不可以根据这个报错帮我进行修改呢,谢谢!

img

img

img

  • 写回答

3条回答 默认 最新

  • 专家-皆知 2024-05-08 23:31
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    从您提供的信息来看,您正在尝试编写一个名为cutStock的递归函数,用于计算满足一系列长度请求所需的最少库存管数量。代码中存在一些错误和未定义的行为。我会为您指出并修正这些问题。

    首先,让我们逐个解决代码中存在的问题:

    1. 包含头文件的问题:您已经包含了<vector>两次,并且分别注释掉了其中一次。只需保留一个不带注释的包含语句即可。
    2. isEmpty()函数未定义:看起来您使用的Vector类没有定义isEmpty()函数。为了简化,我们可以使用requests.empty()来检查向量是否为空。
    3. subList()函数未定义:同理,subList()函数可能未定义。您可以使用requests.erase(requests.begin(), requests.begin()+1)来移除第一个元素,然后对剩余部分调用cutStock
    4. 缺少类型声明:对于变量withoutFirstRequestwithRemainingStock,需要提供它们的数据类型。
    5. 错误的条件判断:在第50行,条件应该是stockLength >= requests[0],而不是stockLength < requests[0]
    6. 缩进问题:在第50行的return语句后,缩进有误。这可能会导致语法错误。

    下面是修复后的代码:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    // Function prototypes
    void testCutStock(vector<int> &requests, int stockLength);
    int cutStock(vector<int>& requests, int stockLength);
    
    int main() {
        vector<int> test1 = {4, 3, 4, 1, 7, 8};
        testCutStock(test1, 10);
    
        vector<int> test2 = {6, 6, 3, 3, 2, 2, 2, 2, 2};
        testCutStock(test2, 10);
    
        return 0;
    }
    
    int cutStock(vector<int>& requests, int stockLength) {
        if (requests.empty()) {
            return 0;
        }
    
        if (stockLength >= requests[0]) {
            int withoutFirstRequest = cutStock(requests, stockLength - requests[0]);
            int withRemainingStock = cutStock(requests.erase(requests.begin()), stockLength); // 使用erase去除第一个元素
            return min(withoutFirstRequest, withRemainingStock);
        } else {
            return 1 + cutStock(requests, stockLength);
        }
    }
    
    void testCutStock(vector<int> &requests, int stockLength){
        cout << "cutstock([";
        for(int i = 0; i < requests.size(); i++) {
            if (i > 0) {
                cout << ",";
            }
            cout << requests[i];
        }
        cout << "], " << stockLength << ") -> " << cutStock(requests, stockLength) << endl;
    }
    

    这段代码应该可以正常工作。如果您仍然遇到问题,请告诉我具体的错误消息,以便我可以进一步协助您。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月8日

悬赏问题

  • ¥15 php 将rtmp协议转hls协议,无法播放
  • ¥15 miniconda安装不了
  • ¥20 python代码编写
  • ¥20 使用MPI广播数据遇到阻塞
  • ¥15 TinyMCE如何去掉自动弹出的“链接…”工具?
  • ¥15 微信支付转账凭证,如何解决
  • ¥15 在win10下使用指纹登录时,界面上的文字最后一个字产生换行现象
  • ¥20 使用AT89C51微控制器和MAX7219驱动器来实现0到99秒的秒表计数,有开始和暂停以及复位功能,下面有仿真图,请根据仿真图来设计c语言程序
  • ¥15 51单片机 双路ad同步采样
  • ¥15 使用xdocreport 生成word