问题 3749 --消消乐(完善程序)

3749: 消消乐(完善程序)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 38  解决: 15
[提交][状态][命题人:]

题目描述

有 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;
}

输入

T组数据。

每组数据一行,将方块序列用字符串形式给出,a,b,c表示三种不同颜色的方块

输出

每组数据一个整数,表示答案。

样例输入
Copy
abc
样例输出
Copy
2

提示

T <= 10

1 <= N <= 5000

来源

[提交][状态]