2013-BIT程序设计 12.编程珠玑 -- dp

原创 2013年10月18日 23:29:47

12.编程珠玑

你有一条项链,它由 N 个随机排列的红、白和蓝色的珠子组成(3<=N<=350)。下面的例子展示了两条 N=29 时的项链:

             1 2                              1 2
           r b b r                           b r r b
          r         b                       b         b
         r           r                     b           r
        r             r                   w             r
       b               r                 w               w
      b                 b               r                 r
      b                 b               b                 b
      b                 b               r                 b
       r               r                 b               r
        b             r                   r             r
         b           r                     r           r
           r       r                         r       b
             r b r                            r r w
          Figure A                     Figure B
                        r red bead
                        b blue bead
                        w white bead
项链上的第一个和第二个珠子已经在图中标出了。

图 A 也可以用一个由 b 和 r 组成的字符串直接表示,b 代表蓝色而 r 代表红色,如下所示:brbrrrbbbrrrrrbrrbbrbbbbrrrrb。

假设你想从项链的某处将它截断拉直;接着从一端向另外一端数收集同颜色的珠子,直到碰到一个不同颜色的珠子为止;然后再从另外一端做同样的操作。(一端收集的珠子颜色可以不同于另一端的。)

请想办法找到一个截断项链的位置,能够让我们尽量多地收集到同色的珠子。

例子

如图 A 中的项链,从第 9 和第 10 个或者第 24 和 第 25 个珠子中间截断,则我们可以收集到 8 个珠子。

图 B 中的项链有白色的珠子,当遇到白色的珠子时,它既可以作为蓝色的珠子看待,也可以作为红色的珠子看待,由收集珠子时的需求决定。包含有白色珠子的项链则会由 r、b 和 w 字符组成的字符串来表示。

请编写一个程序计算从某条项链中能够收集到多少个珠子。

输入格式

第一行: N,项链上珠子的个数

第二行:一个字符串,长度为 N,由 r、b 和 w字符组成

输入样例

29 wwwbbrwrbrbrrbrbrwrwwrbwrwrrb

输出格式

输出一行字符,它应该包含了计算出的结果。

输出样例

11


分析:暴力的方法也是可以过得。


相关文章推荐

编程珠玑 第四章 程序设计

1、迭代实现二分查找 int b_s1(int t[], int i, int j, int s) { if(s t[j]) { return -1; } ...
  • ztz0223
  • ztz0223
  • 2012年09月26日 22:44
  • 1024

2013-BIT程序设计 8.逻辑行计数 -- 模拟

8. 逻辑行计数 背景 有一个软件公司常常用一种不为人知的语言来开发程序,这个语言的特点如下: 有两种形式的字符串,一种为加单引号,另一种加双引号。单引号的字符串可以包含双引...

2013-BIT程序设计 5.传送带 -- 排序

5.传送带 小明的飞机快要赶不上了! 幸好大厅的路上有一些传送带。每个传送带都有一定的速度,传送带之间没有重叠。 小明自己行走的速度为w,如果传送带的速度为v的话,在传送带上走的速度...

2013-BIT程序设计 4. 合并果子 -- 排序(哈夫曼树)

4. 合并果子 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的...

2013-BIT程序设计 3. 扫雷 -- 暴力

3. 扫雷   背景 你玩儿过扫雷游戏吧?有个操作系统中带了这个小游戏,那个系统叫什么来着?;-)在游戏中要想过关,就必须要在一个 NxM 的区域上找出所有的地雷。游戏过程中,计算机...

2013-BIT程序设计 1.球体问题 -- 数学题

1.球体问题 在一部电影中,有一些来自太空的圆球,能使人的噩梦转化为现实。打个比方来说,如果你梦见你正被狮子袭击,那么在现实中你周围的人将会遭到狮子袭击。 现 在问题是送圆球来的外星人正在地球上,他们...

2013-BIT程序设计 14.古罗马的加法

14.古罗马的加法 小明是一个程序员,他最近对罗马数字很感兴趣,决定写一个罗马数字的a+b程序。 罗马数字规则如下(来自维基百科): 罗马数字共有7个,即I(1)、V(5)、X(10...

2013-BIT程序设计 7. 四则运算之加减法 -- 高精度加减

7. 四则运算之加减法 计算机所能完成的一个基本功能就是完成数据的计算,譬如加法、减法等等。但是在任何一种计算机上,计算中能够使用的数字都是有一定范围的,超过了范围,就没法得到精确的结果...

2013-BIT程序设计 2.修剪草坪 -- 暴力

2.修剪草坪 有一个n*m的草坪(1 现在给出一个图案,问是否可以把草坪割成图案的样子。 输入第一行包含两个整数n和m。 接下来为n行输入,每行包含m个不大于100的正整数。 如果可以修剪成输入的...

2013-12-17 与外网串口服务器的delphi程序设计 随笔说说

主要的功能要求如下: PC机作为主控在学校,MCU控制单元在市区商场。MCU部分是个类似智能电表的东西。 要使用PC机实时的查看MCU的电量等信息,并且可以控制MCU的继电器。 因为为远距离传输信号,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2013-BIT程序设计 12.编程珠玑 -- dp
举报原因:
原因补充:

(最多只允许输入30个字)