国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 淮滨县| 禹城市| 科尔| 阿城市| 永昌县| 贵州省| 库尔勒市| 炎陵县| 丰宁| 法库县| 湖南省| 全南县| 江北区| 太原市| 平遥县| 东丽区| 拜城县| 天峻县| 武定县| 临泽县| 齐河县| 黄陵县| 上饶县| 保亭| 崇礼县| 奉化市| 耒阳市| 道孚县| 武邑县| 宁强县| 中江县| 昆明市| 新乡市| 清远市| 乐平市| 蓬莱市| 云和县| 巫山县| 唐山市| 平陆县| 天峻县|