其他分享
首页 > 其他分享> > 1268:【例9.12】完全背包问题

1268:【例9.12】完全背包问题

作者:互联网

                                1268:【例9.12】完全背包问题

【题目描述】

设有nn种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为MM,今从nn种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于MM,而价值的和为最大。

【输入】

第一行:两个整数,MM(背包容量,M≤200M≤200)和NN(物品数量,N≤30N≤30);

第2..N+12..N+1行:每行二个整数Wi,CiWi,Ci,表示每个物品的重量和价值。

【输出】

仅一行,一个数,表示最大总价值。

【输入样例】

10 4
2 1
3 3
4 5
7 9

【输出样例】

max=12
#include <cstdio>
using namespace std;
const int maxm=2001,maxn=31;
int n,m,v,i;
int c[maxn],w[maxn];
int f[maxm];	
int main( void )
{
scanf("%d%d",&m,&n);           
    for(i=1;i<=n;i++) 
        scanf("%d%d",&w[i],&c[i]);
        for(i=1;i<=n;i++)
        for(v=w[i];v<=m;v++)            
            if(f[v-w[i]]+c[i]>f[v])  f[v]=f[v-w[i]]+c[i];
	printf("max=%d\n",f[m]);   
	return 0;
}
 

标签:1268,int,9.12,MM,背包,maxn,物品
来源: https://www.cnblogs.com/27-YGS/p/16311008.html