日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

背包问题1:【SSL】1059.01背包问题——2021-03-10更

發(fā)布時(shí)間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 背包问题1:【SSL】1059.01背包问题——2021-03-10更 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背包問(wèn)題1:【SSL】1059.01背包問(wèn)題

題目:

一個(gè)旅行者有一個(gè)最多能用m公斤的背包,現(xiàn)在有n件物品,它們的重量分別是W1,W2,…,Wn,它們的價(jià)值分別為C1,C2,…,Cn.若每種物品只有一件求旅行者能獲得最大總價(jià)值。

輸入
第1行:兩個(gè)整數(shù),M(背包容量,M<=200)和N(物品數(shù)量,N<=30);

第2至N+1行:每行二個(gè)整數(shù)Wi,Ci,表示每個(gè)物品的重量和價(jià)值。

輸出
僅一行,一個(gè)數(shù),表示最大總價(jià)值。

輸入樣例
10 4
2 1
3 3
4 5
7 9

輸出樣例
12

思路:

和裝箱問(wèn)題一樣,這里的每個(gè)物品都只有2種選擇,要么放,要么不放,所以就可以得到和裝箱問(wèn)題類(lèi)似的結(jié)論,每次都遞歸下去,直到無(wú)法遞歸時(shí),就判斷當(dāng)前這種方法得到的總價(jià)值是否比之前找到的最大價(jià)值大,然后返回,再試一下不放當(dāng)前這個(gè)物品的方法,最后就可得到答案。

代碼:

#include<bits/stdc++.h> using namespace std; int n,m,ans; struct beibao {int jz,zl; }a[50],s[50];void dg(int p,int zy,int sy,int dq) {if(p>n){ans=max(ans,dq);return ;}if(dq+s[n].jz-s[p-1].jz<=ans)return ;if(sy>=a[p].zl)dg(p+1,zy+a[p].zl,sy-a[p].zl,dq+a[p].jz);dg(p+1,zy,sy,dq); } int main() {ios::sync_with_stdio(false);cin>>m>>n;for(int i=1;i<=n;i++){cin>>a[i].zl>>a[i].jz;s[i].zl=s[i-1].zl+a[i].zl;s[i].jz=s[i-1].jz+a[i].jz;}dg(1,0,m,0);cout<<ans;return 0; }

總結(jié)

以上是生活随笔為你收集整理的背包问题1:【SSL】1059.01背包问题——2021-03-10更的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。