64,631
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
#define INF 1000
int m[2500][2500];
int main()
{
int n,l=0;
int D;
cin>>n>>D;
char *s; s=new char[n];
for (l=0;l<n;l++)
{
cin>>s[l];
}
int i,j,k,R,Y;
for (i=0;i<n;i++)
{
R=0;Y=0;
for (j=i;j<n;j++)
{
if (s[j]=='R')
R++;
if (s[j]=='Y')
Y++;
m[i][i]=1;
if (R!=0 &&Y!=0 && abs(R-Y)>D) m[i][j]=INF;
if (R==0||Y==0) m[i][j]=1;
if (R!=0 &&Y!=0 && abs(R-Y)<=D) m[i][j]=1;
}
}
for (int r=2;r<=n;r++)
{
for (i=0;i<=n-r;i++)
{
j=i+r-1;
for (k=i;k<j;k++)
{
int t=m[i][k]+m[k+1][j];
if (t<m[i][j])
{
m[i][j]=t;
}
}
}
}
printf("%d\n",m[0][n-1]);
delete []s;
return 0;
}