国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

hdu2602 Bone Collector 01背包問題

2019-11-08 02:56:56
字體:
來源:轉載
供稿:網友

題目大意: 給出骨頭的價值和重量,用體積為V的背包裝這些骨頭,求最大價值

大致思路: 這里為01背包的講解 http://blog.csdn.net/Remilitarize/article/details/55666889

C:(二維數組)

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1010;int value[maxn],weight[maxn];int dp[maxn][maxn];int main(){ int n; while(scanf("%d",&n)!=EOF){ while(n--){ int a,b,i,j; scanf("%d%d",&a,&b); //a為骨頭數量,b為背包容量 memset(dp,0,sizeof(dp)); //初始化 for(i=1;i<=a;i++) scanf("%d",&value[i]); for(i=1;i<=a;i++) scanf("%d",&weight[i]); for(i=1;i<=a;i++) //選取第i個骨頭 for(j=0;j<=b;j++) //當前背包容量為j if(j>=weight[i]) //如果第i個骨頭能夠裝入背包 dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i]); /*不裝骨頭為dp[i-1][j],裝骨頭為把第i個骨頭的重量去掉對應容量的dp[i-1][j-weight[i]并加上這個骨頭的價值value[i]*/ else dp[i][j]=dp[i-1][j]; C:(一維數組)

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1010;int value[maxn],weight[maxn];int dp[maxn];int main(){ int n; while(scanf("%d",&n)!=EOF){ while(n--){ int a,b,i,j; scanf("%d%d",&a,&b); memset(dp,0,sizeof(dp)); for(i=1;i<=a;i++) scanf("%d",&value[i]); for(i=1;i<=a;i++) scanf("%d",&weight[i]); for(i=1;i<=a;i++) for(j=b;j>=weight[i];j--) //注意要從后向前 dp[j]=max(dp[j],dp[j-weight[i]]+value[i]); printf("%d/n",dp[b]); } } return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 古交市| 林甸县| 新乡县| 万州区| 壶关县| 黑山县| 葵青区| 贵阳市| 固安县| 新沂市| 游戏| 中超| 元阳县| 兴国县| 郧西县| 苏尼特右旗| 精河县| 清水县| 穆棱市| 北碚区| 钟祥市| 南木林县| 即墨市| 雅江县| 达日县| 亳州市| 将乐县| 明光市| 九江市| 靖安县| 大石桥市| 获嘉县| 和林格尔县| 江都市| 宜宾市| 唐山市| 吉水县| 岢岚县| 黄骅市| 徐水县| 新津县|