题目描述
【题目描述】
给你一个仅由A
和B
构成的字符串,每一次操作你可以将一个A
变成一个B
,也可以将一个B
变成一个A
。
请你求出最少多少次操作后,可以将这个字符串变成一个非递减的字符串?
【输入格式】
共一行,第一行有一个字符串,为了大家处理方便,读到空格即表示该字符串结束(即这一行的最后一个字符是空格)
【输出格式】
输出一个数字,表示最少的操作次数
【样例输入 1】
AABBA
【样例输出 1】
1
【样例解释 1】
将最后一个A翻转成B就变成AABBB即为非递减
【数据范围】
``
对于20%的数据来说
1 <= 字符串长度 <= 100
对于100%的数据来说
1 <= 字符串长度 <= 1e7
我的马:
#include<iostream>
#include<string.h>
using namespace std;
const int maxn=65;
long long dp[maxn][maxn];
int main()
{
memset(dp,0,sizeof(dp));
for(int i=1;i<=10;i++)
dp[1][i];
int T;
cin>>T;
while(T--){
long long Case,n,res=0;
cin>>Case>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=10;j++)
dp[i][j]=dp[i][j-1]+dp[i-1][j];
}
for(int j=1;j<=10;j++)
res+=dp[n][j];
cout<<res<<endl;
}
return 0;
}
求助。。。