您的位置:首页 > 其它

0-1背包问题

2014-03-07 01:29 183 查看
有n个物品。第i个物品的体积为Vi,重量为Wi。选一些物品装到一个容量为C的背包,使得背包内物品在总体积不超过C的前提下重量尽量大。1<=n<=100,

1<=Vi<=C<=1000,1<=Wi<=10^6。

#include <iostream>
#include <math.h>
using namespace std;

void fun(int V[], int W[], int n, int C)
{
int d[101][1001];

for (int i = 0; i <= C; i++)
{
d
[i] = 0;
}

for (int i = n-1; i >= 0 ; i--)
{
for (int j = 0; j <= C; j++)
{
if (j >= V[i])
{
d[i][j] = max(d[i+1][j], d[i+1][j-V[i]]+W[i]);
}
else
{
d[i][j] = d[i+1][j];
}
}
}

cout << "result " << d[0][C] << endl;
}

int main(int argc, char *argv[])
{
int V[3] = {1, 6, 3};
int W[3] = {1, 2, 3};
fun(V, W, 3, 7);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: