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 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助