陷入了靠前焦虑状态,好长时间没做过题了吧,水题一个没想起来。。
-------------------因为热爱,所以执着-----------------
继续补题,不急慢慢来。
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
char s[5005];
int dp[5005][5],n;
int solve(int pos,int now)
{
if(now>3||pos>n)return 0;
if(dp[pos][now]!=-1)return dp[pos][now];
int res=0;
if(now==1||now==3)
{
if(s[pos]=='a')
res=max(res,1+solve(pos+1,now));
else res=max(res,solve(pos+1,now));
}
if(now==2)
{
if(s[pos]=='b')
res=max(res,1+solve(pos+1,now));
else res=max(res,solve(pos+1,now));
}
if(now<3)
{
res=max(res,solve(pos,now+1));
}
dp[pos][now]=res;
return dp[pos][now];
}
int main()
{
scanf("%s",s+1);
n=strlen(s+1);
memset(dp,-1,sizeof(dp));
printf("%d\n",solve(1,1));
return 0;
}