为什么?
查看原帖
为什么?
935858
Bigtanks10楼主2024/12/5 22:57

我感觉已经和一篇题解已经很像了,但我错了,它对了

#include<bits/stdc++.h>
using namespace std;
int n,m,a[210],b[20010],dp[20010],maxa = INT_MIN; 
int main()
{
	memset(dp,INT_MIN,sizeof(dp));
	cin>>n>>m;
	for(int i = 1;i <= m;i++)
	{
		cin>>a[i];
		maxa = max(maxa,a[i]);
	}
	for(int i = 1;i <= n;i++)
	{
		cin>>b[i];	
	}
	dp[1] = b[1];
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= m;j++)
		{
			if(i - a[i] <= 0)
			{
				continue;
			}
			dp[i] = max(dp[i - a[j]] + b[i],dp[i]);
		}
	}
	int ans = -100000010;
	for(int i = n - maxa + 1;i <= n;i++)
	{
		ans = max(dp[i],ans);
	}
	cout<<ans;
    return 0;
}

代码如上

2024/12/5 22:57
加载中...