BITCS2016程序设计 | 12. 编程珠玑

12.编程珠玑

成绩 10 开启时间 2016年09月6日 星期二 11:00
折扣 0.8 折扣时间 2016年09月12日 星期一 23:55
允许迟交 关闭时间 2016年10月10日 星期一 23:55

你有一条项链,它由 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
  测试输入关于“测试输入”的帮助 期待的输出关于“期待的输出”的帮助 时间限制关于“时间限制”的帮助 内存限制关于“内存限制”的帮助 额外进程关于“{$a} 个额外进程”的帮助
测试用例 1 以文本方式显示
  1. 29↵
  2. wwwbbrwrbrbrrbrbrwrwwrbwrwrrb↵
以文本方式显示
  1. 11↵
1秒 1024KB 0
解题思路:
       这道题我直接用的遍历,对项链中的每个点进行向左向右的遍历,需要体会扫描的逻辑关系及头尾珠子的判断。


结果:





编程珠玑(programming pearls)最早刊登在communications of the ACM 杂志上,有个连载的专栏。文章从1983年到1987年,一共30篇。 目前的书籍<>就是作者在上述文章的基础上修改而成的。 然而,无论你是否阅读过这本书,阅读原始的文 章都将使你受益菲浅。因为如同优秀的论文一样,这一篇篇的文章自成体系,从问题的引入到启发性的解决思路,再到巧妙的解法,令人拍案称奇,难以忘怀。 一共有30篇文章: #ls -l -rwxr-xr-x 1 lh root 688955 2010-06-26 15:47 ABSTRACT DATA TYPES 1987.pdf -rwxr-xr-x 1 lh root 592362 2010-06-26 15:46 Aha algorithms 1983.pdf -rwxr-xr-x 1 lh root 544972 2010-06-26 15:37 algorithm design techniques 1984.pdf -rwxr-xr-x 1 lh root 1272082 2010-06-26 15:36 a literate program 1986.pdf -rwxr-xr-x 1 lh root 383303 2010-06-26 15:48 A SAMPLE OF BRILLIANCE 1987.pdf -rwxr-xr-x 1 lh root 736403 2010-06-26 15:26 a spelling checker 1985.pdf -rwxr-xr-x 1 lh root 621936 2010-06-26 15:41 associative arrays 1985.pdf -rwxr-xr-x 1 lh root 655322 2010-06-26 15:38 birth of a cruncher 1986.pdf -rwxr-xr-x 1 lh root 784014 2010-06-26 15:48 CONFESSIONS OF A CODER 1985.pdf -rwxr-xr-x 1 lh root 699274 2010-06-26 15:45 Cracking the oyster 1983.pdf -rwxr-xr-x 1 lh root 552332 2010-06-26 15:41 cutting the Gordian knot 1986.pdf -rwxr-xr-x 1 lh root 543033 2010-06-26 15:46 data structures programs 1983.pdf -rwxr-xr-x 1 lh root 786419 2010-06-26 15:42 Document design 1986.pdf -rwxr-xr-x 1 lh root 785751 2010-06-26 15:49 GRAPHIC OUTPUT 1984.pdf -rwxr-xr-x 1 lh root 311483 2010-06-26 15:37 how to sort 1984.pdf -rwxr-xr-x 1 lh root 619861 2010-06-26 15:43 literate programming 1986.pdf -rwxr-xr-x 1 lh root 1079682 2010-06-26 15:43 little languages 1986.pdf -rwxr-xr-x 1 lh root 270603 2010-06-26 15:35 little program, a lot of fun 1984.pdf -rwxr-xr-x 1 lh root 444133 2010-06-26 15:34 perspective on performance 1984.pdf -rwxr-xr-x 1 lh root 607158 2010-06-26 15:47 profilers 1987.pdf -rwxr-xr-x 1 lh root 632085 2010-06-26 15:29 selection 1985.pdf -rwxr-xr-x 1 lh root 426242 2010-06-26 15:46 self-describing data 1987.pdf -rwxr-xr-x 1 lh root 749141 2010-06-26 15:33 squeezing space 1984.pdf -rwxr-xr-x 1 lh root 573936 2010-06-26 15:39 than
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值