问哪里错了
查看原帖
问哪里错了
1127424
damuzhi楼主2024/12/10 17:19
#include <bits/stdc++.h>

using namespace std;

int a[100];
char b[1000100];
int f[1000100];

int main(){
	int n;
	cin >> n;
	for(int i = 1; i <= n; i++) cin >> a[i];
	int lb;
	cin >> lb;
	cin >> b;
	int now = 0;
	int ans = -1e9;
	for(int i = 2; i < lb; i++){
		if(b[i] == 'c' && b[i-1] == 'b' && b[i-2] == 'a'){
			now++;
			int k = i;
			for(int j = now; j>=0; j--){
				k = i-(j*3);
				if(k < 0) continue;
				f[i] = max(f[i],f[k] + a[j]);
				ans = max(ans,f[i]);
			}
			i+=2;
		}
		else{
			now = 0;
			f[i] = f[i-1];//承接 
		}
	}
	cout << ans;
	/*
3 1 2 3
20
dabcabcabczzzabcabca
	*/
	return 0;
}
2024/12/10 17:19
加载中...