蒟蒻又双叒叕地求助背包
查看原帖
蒟蒻又双叒叕地求助背包
339299
osfly楼主2021/7/11 16:00
#include<cstdio>
int N,M;
int V[30],W[30];
int dp[100000][30];
int max(int a,int b)
{
	if(a>b) return a;
	return b;
}
int main()
{
	scanf("%d%d",&N,&M);
	for(int m=1;m<=M;m++) scanf("%d%d",&V[m],&W[m]);
	for(int n=0;n<=N;n++)
		if(n>=V[1]) dp[1][n]=V[1]*W[1];
	for(int m=2;m<=M;m++)
		for(int n=0;n<=N;n++)
		{
			if(n<V[m]) dp[m][n]=dp[m-1][n];
			else dp[m][n]=max(dp[m-1][n-V[m]]+V[m]*W[m],dp[m-1][n]);
		}
	printf("%d",dp[N][M]);
	return 0;
 } 

0pts+样例不过

2021/7/11 16:00
加载中...