#include<iostream>
using namespace std;
int main()
{
int w[4] = {2,3,4,5};
int v[4] = {3,4,5,7};
int i, j;
int m_Bag;
cout << "输入背包载重:";
cin >> m_Bag;
int *m = new int[(m_Bag+1)*(4+1)];
for (i=0; i<4+1; i++)
{
for (j=0; j<m_Bag+1; j++)
{
m[i*m_Bag+j] = 0;
}
}
for (i=1; i<4+1; i++)
{
for (j=1; j<m_Bag+1; j++)
{
m[i*(m_Bag+1)+j] = m[(i-1)*(m_Bag+1)+j];
if (w[i-1] <= j)
{
if (v[i-1]+m[(i-1)*(m_Bag+1)+j-w[i-1]] > m[(i-1)*(m_Bag+1)+j])
{
m[i*(m_Bag+1)+j] = v[i-1]+m[(i-1)*(m_Bag+1)+j-w[i-1]];
}
}
cout.width(5);
cout<< m[i*(m_Bag+1)+j];
}
cout << endl;
}
cout << "背包可装的最大价值:" << m[(i-1)*(m_Bag+1)+(j-1)];
return 0;
}
动态规划之01背包
最新推荐文章于 2022-12-14 22:09:14 发布