vector实现背包dp,报错

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

#include
#include
#include
#include

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 << "请输入每个商品的体积 : "<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);
    }
    vectorint > > 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
在不改变变长数组的情况下正常输出

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

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^