跪求大佬
查看原帖
跪求大佬
937850
yudongkai1234楼主2025/8/28 23:19

哪里错了捏

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 10;
int dp[N];
int n, m, cnt;
int p[25];
string s;
signed main(){
	cin >> n;
	for(int i = 1; i <= n; i ++) cin >> p[i];
	cin >> m;
	cin >> s; 
	for(int i = 2; i < s.size(); i ++)
	{
		if(s[i] != 'c' && s[i] != 'b' && s[i] != 'a') cnt = 0;
		if(s[i] == 'c' && s[i - 1] != 'b') cnt = 0;
		if(s[i] == 'b' && s[i - 1] != 'a') cnt = 0;
		if(s[i] == 'c' && s[i - 1] == 'b' && s[i - 2] == 'a') cnt ++;
		dp[i] = dp[i - 1];
		for(int j = 1; j <= cnt && j <= n; j ++)
		{
			dp[i] = max(dp[i], dp[i - j * 3] + p[j]);
		}
	}
	int res = s.size() - 1;
	cout << dp[res];
	return 0;
}
2025/8/28 23:19
加载中...