Diary_Of_Young 2022-10-03 13:30 采纳率: 100%
浏览 20
已结题

vector实现背包dp,报错

背包dp,没报错,为什么运行不了啊。

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<vector>

using namespace std;

vector <int> num(0, 0);
vector <int> value(0, 0);
int m=0, n=0;

int main()
{
    system("color 2E");
    cout << "请输入商品数M : ";
    cin >> m;
    cout << "请输入容器容量N : ";
    cin >> n;
    int temp=0;
    cout << "请输入每个商品的体积 : "<<endl;
    for (int i = 0; i < m; i++)
    {
        cin >> temp;
        num.push_back(temp);

    }
    cout << "请输入每个商品的价值 : " << endl;
    for (int i = 0; i < m; i++)
    {
        cin >> temp;
        value.push_back(temp);
    }
    vector<vector< int > > a(m + 1, vector<int>(n + 1));
    for (int i = 0; i <= m; i++)
    {
        a[i][0] = 0;
    }
    for (int i = 0; i <= n; i++)
    {
        a[0][i] = 0;
    }
    for (int i = 1; i <= m; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (num[i - 1] < j)
            {
                a[i][j] = 0;
            }
            else
            {
                a[i][j] = max(a[i-1][j],(value[i-1]+a[i-1][j-num[i-1]]));
            }
        }
    }
    cout << "物品的最大价值为 : ";
    cout << a[m + 1][n + 1] << endl;
    return 0;
}

img

用一维数组就可以,但我想用vector
在不改变变长数组的情况下正常输出

  • 写回答

2条回答 默认 最新

  • lzl2040 人工智能领域新星创作者 2022-10-03 14:49
    关注

    vector创建二维数组,应该是这里错了。
    按着下面这个改一下
    //创建一个[99][99]的二维数组
    vector<vector > f(99,vector(99))

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月11日
  • 已采纳回答 10月3日
  • 创建了问题 10月3日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置