動態規劃 物品無限的揹包問題

2021-07-14 21:27:55 字數 1543 閱讀 3270

物品無限的揹包問題。有

n 種物品,每種均有無窮多個。第i種物品的體積為vi

,重量為wi

。選一些物品裝到乙個容量為

c 的揹包中,使得揹包內物品在總體積不超過

c的前提下重量盡量大。1≤

n≤100 ,1≤

vi≤c

≤10000

,1≤wi≤10

6 。

dp要初始化為無法得到的值,比如說-1,使用memset(dp, -1, sizeof(dp))進行初始化。

int dpbag(int s) 

ans = 0;

for(int i = 1; i <= n; i++)

}return ans;

}

void solve() 

for(int i = 1; i <= c; i++) }}

}cout << ans << endl;

}

#include 

#include

#include

using

namespace

std;

const

int max_num = 100 + 5;

const

int max_capacity = 10000 + 5;

const

int inf = 100000000;

// 物品種類

int n;

// 揹包容量

int c;

// 體積

int volumn[max_num];

// 重量

int weight[max_num];

// dp[i]表示體積為i時的最大重量

int dp[max_capacity];

void solve()

for(int i = 1; i <= c; i++) }}

}cout

<< ans << endl;

}int dpbag(int s)

ans = 0;

for(int i = 1; i <= n; i++)

}return ans;

}int main()

solve();

memset(dp, -1, sizeof(dp));

cout

<< dpbag(c) << endl << endl;

}return

0;}

351

2233

210103

7213

2435

5353

3423

2330

process returned 0 (0x0) execution time : 22.801 s

press any key to continue.

動態規劃 揹包問題

給定n個物品,重量是,價值是,包的容量 承重 是w 問,放入哪些物品能使得包內價值最大 1 需要將問題轉化為子問題,通過遞迴實現,且子問題必然與父問題存在關聯 2 定義v i,j 表示為,當item取自前i個items且揹包capacity j 時,揹包問題的最優解,也即最高的價值。3 從前i個it...

動態規劃 揹包問題

不廢話,直接上 動態規劃,揹包問題。輸入為 int n 物品的種類數。int n weight 各件物品的重量。int n value 各種物品的價值。int w 揹包最大的裝載重量。輸出 v n b 的值,最大的裝載價值。x n 各類物品的裝載數量。author huangyongye publi...

動態規劃 揹包問題

1 開心的金明 問題描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n 元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n 元。於是,他把每...