微软2016校园招聘在线笔试——第一题

题目1 : Magic Box

时间限制:10000ms

单点时限:1000ms

内存限制:256MB

描述

The circus clown Sunny has a magic box. When the circus is performing, Sunny puts some balls into the box one by one. The balls are in three colors: red(R), yellow(Y) and blue(B). Let Cr, Cy, Cb denote the numbers of red, yellow, blue balls in the box. Whenever the differences among Cr, Cy, Cb happen to be x, y, z, all balls in the box vanish. Given x, y, z and the sequence in which Sunny put the balls, you are to find what is the maximum number of balls in the boxever.

For example, let's assume x=1, y=2, z=3 and the sequence is RRYBRBRYBRY.

After Sunny puts the first 7 balls, RRYBRBR, into the box, Cr, Cy, Cb

are 4, 1, 2 respectively. The differences are exactly 1, 2, 3.

(|Cr-Cy|=3, |Cy-Cb|=1, |Cb-Cr|=2) Then all the 7 balls vanish. Finally

there are 4 balls in the box, after Sunny puts the remaining balls. So

the box contains 7 balls at most, after Sunny puts the first 7 balls and

before they vanish.

输入

Line 1: x y z

Line 2: the sequence consisting of only three characters 'R', 'Y' and 'B'.

For 30% data, the length of the sequence is no more than 200.

For 100% data, the length of the sequence is no more than 20,000, 0 <= x, y, z <= 20.

输出

The maximum number of balls in the boxever.

样例输入

1 2 3

RRYBRBRYBRY

样例输出

7


—————————哥哥哥—————————————

为什么投设计也要做题啊啊啊啊!

而且开考前一小时才收到补发的邮件,才看到是考编程,用C/C++/Java/C#做

我的C已经还给妈妈了啊啊啊啊

好吧,一边查书查百度一边做……

我的电脑还没搭C的编译环境,于是用在线编译器http://ideone.com测试……

—————————哥哥哥—————————————

这一题死活编译不顺利!

输入样例,就是给我出来0!0你妹啊!!用printf大法查来查去,发现abc的值一直只有c是1,其他两个都是0,好像没有读入数据啊?

后来截止时间前20秒(是的!就是这么炫酷心跳!)才发现一个大蠢bug!我c本来是计算某个颜色的小球数量的,却被我在前面的循环里用去做字符的输入!!变量冲突,难怪读不出来……改改改,只来得及改成这样——

注意加粗的if里的c……忘了改……就这么提交了……泪

#includeint main(void) {

int n,x,y,z,a,b,c,m;

n=m=a=b=c=0;

while(scanf("%d%d%d", &x, &y,&z) != EOF) {

while (e=getchar() != EOF){

if (c=='R')

a+=1;

else if  (c=='B')

b+=1;

else if  (c=='Y')

c+=1;

n+=1;

if( ( x==abs(a-b) && y==abs(b-c) && z==abs(a-c) ) ||  ( x==abs(a-b) && z==abs(b-c) && y==abs(a-c) )  ||  ( y==abs(a-b) && x==abs(b-c) && z==abs(a-c) )  ||  ( y==abs(a-b) && z==abs(b-c) && x==abs(a-c) )  ||  ( z==abs(a-b) && x==abs(b-c) && y==abs(a-c) )  ||  ( z==abs(a-b) && y==abs(b-c) && x==abs(a-c) )  ) {

a=b=c=0;

if(n>m) {

m=n;

n=0;

}

}

}

printf("%d\n", m);

}

return 0;

}


截止后还是死活想把它弄出来,明明只差一点!

先就是把if里的c都改成e,然后编辑错,加个char e;就好了。然后printf大发这回告诉我循环了12次abc每次都是0……why……明明我改了e了为何还是读不进去。

后来翻书,试试第二行还是用scanf输入而不用getchar,果然……这回有了变化!除了m是8比正确答案多循环了一次外都对了!这回学到了,下次有一长串东西应该用scanf这个标准化输入函数……

最后,多出一次循环是因为多读了一个回车,于是找到解决方法如下:

(1)用getchar()清除

(2)用"%1s"来限制

(3)用格式串中空格或"%*c"来"吃掉"

(4)用函数fflush(stdin)清除全部剩余内容

加个最简单的getchar(),终于在闭卷半小时后调出来啦!

在线编译器果然好慢……折腾死…… 

以下是正确的代码(多保留了几个printf,实际只需要最后的printf("%d\n", m);):

#includeint main(void) {

int n,x,y,z,a,b,c,m;

char e;

n=m=a=b=c=0;

while(scanf("%d%d%d", &x, &y,&z) != EOF) {

getchar();

while(scanf("%c", &e) != EOF) {

if (e=='R')

a+=1;

else if  (e=='B')

b+=1;

else if  (e=='Y')

c+=1;

n+=1;

printf("第n次%d%d%d%d\n%d\n%d\n%d\n%d\n", m,x,y,z,a,b,c,n);

if( ( x==abs(a-b) && y==abs(b-c) && z==abs(a-c) ) ||  ( x==abs(a-b) && z==abs(b-c) && y==abs(a-c) )  ||  ( y==abs(a-b) && x==abs(b-c) && z==abs(a-c) )  ||  ( y==abs(a-b) && z==abs(b-c) && x==abs(a-c) )  ||  ( z==abs(a-b) && x==abs(b-c) && y==abs(a-c) )  ||  ( z==abs(a-b) && y==abs(b-c) && x==abs(a-c) )  ) {

a=b=c=0;

if(n>m) {

m=n;

n=0;

printf("%d%d%d%d\n%d\n%d\n%d\n%d\n", m,x,y,z,a,b,c,n);

}

}

}

printf("%d%d%d%d\n%d\n%d\n%d\n%d\n", m,x,y,z,a,b,c,n);

}

return 0;

}


http://ideone.com/TCg5LN

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 参与eos的ico后,如何认领eos代币视频,为什么做这个视频教程,是因为eos的ico的代币不是自动发放的,是需...
    刀哥BTCACCN阅读 624评论 0 1
  • 嘉嘉,一个让我喜欢让我忧的女孩儿! 嘉嘉第一次来到我身边,是在二三班的小豆包学习了一个学期后的事了。过完年新学期伊...
    清浅光阴阅读 406评论 0 4
  • 我是一枚红豆 我匀圆万颗相似 引多少人暗数成痴 我嵌入玲珑骰子 引多少人入骨相思 古往今来 我已承载了太多的 诗情...
    静铃音阅读 305评论 22 23
  • 今天太累了,就把这个当打卡吧,也和小伙伴们分享一下今天的心得。〈每日一问〉昨天有心友私信老师,问为什么大家有体悟这...
    田心远阅读 167评论 0 0