30求助
查看原帖
30求助
416242
New_hope楼主2023/7/10 20:28
#include<bits/stdc++.h>
using namespace std;

int a[400],b[150],dp[150][400];// i->第i张卡; j->当前位置 

int main(){
	
	int n,m,i,j,q;
	scanf("%d%d",&n,&m);
	for(i = 1;i <= n;i ++){
		scanf("%d",&a[i]);
	}
	for(i = 1;i <= m;i ++){
		scanf("%d",&b[i]);
	}
	dp[0][1] = a[1];
	for(i = 1;i <= m;i ++){
		for(j = 1;j <= n;j ++){
			for(q = 1; q <= m;q ++){
				dp[i][j] = max(dp[i][j],dp[i-1][j-b[q]]+a[j]);
			}
		}
	}
	printf("%d",dp[m][n]);
	return 0;
} 

这个思路可不可以,为啥只能得部分分

2023/7/10 20:28
加载中...