有 N 个方块排成一排,每个方块都染有颜色,第 i 个的颜色为 Ci,一共有三种颜色,分别为红,黄,蓝,现在你可以对相邻的颜色不同的方块进行施法,使其变成第三种颜色,比如对相邻的红方块和黄方块进行施法,就会使其合并为蓝方块。施法顺序的不同,可能对最终的结果产生不同的影响,问在最优策略下,最少能剩下多少个方块。
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 5010;
char s[N];
int main()
{
while (~scanf("%s", s))
{
int len = strlen(s);
__(1)__
for (int i = 1; i < len; i++) __(2)__;
if (!flag)
printf("%d\n", len);
else
{
int sg = 0;
for (int i = 0; i < len; i++) __(3)__;
if (sg)
__(4)__;
else
____(5)_____;
}
}
return 0;
}