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

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

算法提高 01背包

2019-11-11 00:59:00
字體:
供稿:網(wǎng)友
  算法提高 01背包  時間限制:1.0s   內(nèi)存限制:256.0MB    問題描述  給定N個物品,每個物品有一個重量W和一個價值V.你有一個能裝M重量的背包.問怎么裝使得所裝價值最大.每個物品只有一個.輸入格式  輸入的第一行包含兩個整數(shù)n, m,分別表示物品的個數(shù)和背包能裝重量。  以后N行每行兩個數(shù)Wi和Vi,表示物品的重量和價值輸出格式  輸出1行,包含一個整數(shù),表示最大價值。樣例輸入3 52 33 54 7樣例輸出8數(shù)據(jù)規(guī)模和約定  1<=N<=200,M<=5000.

算是再溫習一遍二維數(shù)組的寫法,也有一維的,還是要多注重細節(jié)  為啥可以優(yōu)化就不講了,手動推一下就能出來

二維:

#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<cmath>using namespace std;const int MAXN=205;const int MAXM=5005;int v[MAXN];int w[MAXN];int dp[MAXN][MAXM];int main(){    int n,m;    scanf("%d %d",&n,&m);    for(int i=1;i<=n;i++)    {        scanf("%d %d",&w[i],&v[i]);    }    for(int i=1;i<=n;i++)    {        for(int j=0;j<=m;j++)        {            if(j>=w[i])                dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);            else                dp[i][j]=dp[i-1][j];        }    }    PRintf("%d/n",dp[n][m]);    return 0;}一維:

#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<cmath>using namespace std;const int MAXN=205;const int MAXM=5005;int v[MAXN];int w[MAXN];int dp[MAXM];int main(){    int n,m;    scanf("%d %d",&n,&m);    for(int i=1;i<=n;i++)    {        scanf("%d %d",&w[i],&v[i]);    }    for(int i=1;i<=n;i++)    {        for(int j=m;j>=w[i];j--)        {            dp[j]=max(dp[j],dp[j-w[i]]+v[i]);        }    }    printf("%d/n",dp[m]);    return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 神池县| 夹江县| 新乡市| 宜都市| 突泉县| 南宫市| 施甸县| 井冈山市| 青田县| 克东县| 韶山市| 宝清县| 城固县| 日照市| 松原市| 哈密市| 阿拉善左旗| 义乌市| 宜君县| 芜湖县| 泗水县| 台北市| 兰溪市| 肥东县| 营口市| 昌吉市| 江永县| 桐柏县| 沈丘县| 威宁| 马关县| 东方市| 丘北县| 女性| 九寨沟县| 遵义市| 呼伦贝尔市| 沙田区| 阿拉尔市| 门头沟区| 肃宁县|