背包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;
}
用一维数组就可以,但我想用vector
在不改变变长数组的情况下正常输出