public class Main {
public static int getMaxValue(int[] val,int[] weight,int[] q,int n,int w){
int[][]dp= new int[n+1][w+1];
for(int i=1;i<=n;i++){
for(int j=1;j<=w;j++){
if(q[i-1]==0){
if(weight[i-1]<=j)
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j- weight[i - 1]]+ val[i - 1]);
else{
if (weight[i - 1] + weight[q[i - 1]] <= j) //附件的話 加上主件一起算
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j- weight[i - 1]]+ val[i - 1]);
}
}
}
}
return dp[n][w];
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNextInt()) {
int n = input.nextInt(); // 總錢數
int m = input.nextInt(); // 商品個數
int[] p = new int[m];
int[] v = new int[m];
int[] q = new int[m];
for (int i = 0; i < m; i++) {
p[i] = input.nextInt();// 價格
v[i] = input.nextInt() * p[i]; // 價值
q[i] = input.nextInt();// 主or附件
}
System.out.println(getMaxValue(v, p, q, m, n));
}
}
}
動態規劃 有依賴的背包問題
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- 下面選了最近十年里,十位名人所做的畢業演講。那么多的故事與經歷,其實只想告訴你一件事: 面對迷茫和不確定的未來,我...
- 升級完xcode8后出現注冊推送失敗 原因是xcode默認Push Notifications為關閉的,只要打開按鈕即可