打印本文 打印本文 关闭窗口 关闭窗口
中学生解 Google 编程赛模拟题
作者:武汉SEO闵涛  文章来源:敏韬网  点击数972  更新时间:2009/4/23 14:19:08  文章录入:mintao  责任编辑:mintao

一、TopCoder提供的Google比赛模拟题(由作者翻译),版权所有

问题1:
造一个长方形的房子,门窗墙为基本单元,长度均为4米,在以下条件下如何摆放四面墙能围成最大面积?
1) 一面最多有一个门
2) 房子至少有一个门
3) 门不能安在角落里
4) 窗的两侧都要是墙

已知墙的个数numReg, 窗的个数numWin, 门的个数numDoor,写一个函数maxArea,返回四面墙能围成的最大面积

举例如下
maxArea(8,0,0)=0;//因为房子不能没有门
maxArea(8,0,1)=48;//12*4,
如:
--- 三个墙
| | 两边各一个墙
-D- 两个墙夹一个门

maxArea(9,8,2)=144;//12*12,如:
-D- 两个墙夹一个门
| | 两边各一个墙
W W 两边各一个窗户
| | 两边各一个墙
-D- 两个墙夹一个门

maxArea(6,23,13)=48;//12*4,如:
-W- 两个墙夹一个窗户
| | 两边各一个墙
-D- 两个墙夹一个门


问题二:
各个细胞都有其自身的分数,某协议表示存在一个临界值(允许小数),凡是分数小于该值的一般不得癌,反之就得癌。当然也会存在出错的,出错的记下其方差(即分数和临界值的差的平方),符合该协议的则方差为0,而平均方差是所有方差的平均。
已知一系列细胞的分数(整数,2到50之间)及其得癌与否(C表示得了,N表示未得),求在所有可能的临界值中最小的平均方差

举例如下
{3,3,1,8}
"NNNC"
=0;//如果选择临界值为5,则均符合规律,方差均为0,故为(0+0+0+0)/4

{5,2,3,6}
"CCNC"
=0.125;//如果选择临界值为2.5,2和3不符合规律,故为(0+(2.5-2)^2 +(3-2.5)^2+0)/4 = 0.125

{5,2,3,6,2}
"CCNCN"
=0.1;//如果选择临界值为2.5,2和3不符合规律,故为(0+(2.5-2)^2 +(3-2.5)^2+0+0)/5 = 0.1

{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
"NNNCNNNCNNNCNCCCCCCC"
=2.34


问题三:
要重排英文小写字母表的字母顺序,通过一串由B和A组成的规则字符串限制相邻字母的关系,如规则字符串第一个字符表示a和b之间的先后关系,第二个表示b和c之间的先后关系,以此类推
B表示必须在..前,A表示必须在..后,如BAA表示,a必须在b前,b必须在c后,c必须在d后
没有提供相互关系的字母不能出现,即如果该规则字符串有k个字母,则字母表只包含从a开始的k+1个字母,如BAA只提供了abcd之间的关系,不包含d之后的字母

已知该规则字符串decree,写一个方法choices,求符合该规则的字母表的个数,如果超过1,000,000,000就返回 -1.
举例如下
"BAA"=3;//表示a必须在b前,b必须在c后,c必须在d后,可能组合为 adcb, dacb, dcab

"AAAA"=1;//edcba为唯一可能
"BABABABABABABABABABABABAB"=-1;//超过1,000,000,000种可能

(要求一小时内完成)

打印本文 打印本文 关闭窗口 关闭窗口