完全背包问题dp

完全背包
有n个重量的价值分别为wi,vi的物品,从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值
限制条件
1≤n≤100
1≤wivi≤100
1≤W≤10000


样例

输入
n=3
{w,v}={{3,4},{4,5},{2,3}}
w=7


输出
10(0号物体选1个,2号物体选两个)
 

 三重循环(复杂度nw平方)
#include
#include
#include
#include//关于字符的 
using namespace std;
int dp[110][110];//记忆化数组 
	int n,W;int w[110]={0};	int v[110]={0};
int max(int a,int b){
	if(a>b)	return a;
	else return b;
}
int main(){
	cin>>n;
	for(int i=0;i>w[i]>>v[i];
	}
	cin>>W;
	memset(dp,0,sizeof(dp));
	for(int i=0;i
优化处理,复杂度(nw)
#include
#include
#include
#include//关于字符的 
using namespace std;
int dp[110][110];//记忆化数组 
	int n,W;int w[110]={0};	int v[110]={0};
int max(int a,int b){
	if(a>b)	return a;
	else return b;
}
int main(){
	cin>>n;
	for(int i=0;i>w[i]>>v[i];
	}
	cin>>W;
	memset(dp,0,sizeof(dp));
	for(int i=0;i



你可能感兴趣的:(完全背包问题dp)