微软必应·英雄会第三届在线编程大赛:几个bing?

  • 难 度 等 级:
  • 答 题 时 长:120分钟
  • 编程语言要求:C C++ Java C#
悬赏详情
一等奖 : 价值2199元的WindowsphoneNokiaLumia1020 
二等奖 : 价值799元的微软无线蓝影键盘鼠标套装 
三等奖 : 价值699元的微软Arc鼠标 
题目详情

    本届大赛由微软必应词典冠名,必应词典(http://cn.bing.com/dict/?form=BDVSP4&mkt=zh-CN&setlang=ZH)是微软推出的新一代英语学习引擎,里面收录了很多我们常见的单词。但现实生活中,我们也经常能看到一些毫无规则的字符串,导致词典无法正常收录,不过,我们是否可以从无规则的字符串中提取出正规的单词呢?

   例如有一个字符串"iinbinbing",截取不同位置的字符‘b’、‘i’、‘n’、‘g’组合成单词"bing"。若从1开始计数的话,则‘b’ ‘i’ ‘n’ ‘g’这4个字母出现的位置分别为(4,5,6,10) (4,5,9,10),(4,8,9,10)和(7,8,9,10),故总共可以组合成4个单词”bing“。

  咱们的问题是:现给定任意字符串,只包含小写‘b’ ‘i’ ‘n’ ‘g’这4种字母,请问一共能组合成多少个单词bing?

  字符串长度不超过10000,由于结果可能比较大,请输出对10^9 + 7取余数之后的结果。

 

答题说明
main函数可不用完成。
 
答案
 1 private int GetCount(string s)
 2 {
 3     int b = 0, bi = 0, bin = 0, bing = 0;
 4     for(int i=0;i<s.Length;i++)
 5     {
 6         switch (s[i])
 7         {
 8             case 'b': b++; break;
 9             case 'i': bi = bi + b; break;
10             case 'n': bin = bin + bi; break;
11             case 'g': bing = bing + bin; break;
12             default: break;
13         }
14     }
15     return bing;
16 }
View Code

 

posted @ 2014-02-07 17:33  叮*^_^*叮  阅读(260)  评论(0编辑  收藏  举报