写成背包了,求助
查看原帖
写成背包了,求助
953149
DoubleQLzn楼主2024/10/19 18:05
#include <bits/stdc++.h>
using namespace std;
int a[100005],w[100005],v[100005],dp[1000005];
int main()
{
	string b;
	int n,m;
	cin >> n;
	for (int i = 1;i <= n;i++) cin >> a[i];
	cin >> m >> b;
	int s = 0;
	for (int i = 0;i < b.size();i++)
	{
		string c = b.substr(i,3);
		if (c == "abc") s++;
	}
	m = s;
	for (int i = 1;i <= n;i++)
	{
		w[i] = i;
		v[i] = a[i];
	}
	for (int i = 1;i <= n;i++)
	{
		for (int j = w[i];j <= m;j++)
		{
			dp[j] = max(dp[j],dp[j - w[i]] + v[i]);	
		}
	}
	cout << dp[m];
	return 0;
}

写法有点神金

2024/10/19 18:05
加载中...