回忆一下 360 实习编程题

现在两批人都考完了,来透个题。规定上说不能用笔抄,没说不能用脑子记。省略全部废话,只说题干。总体来说就是一个字:

1. 两个人A、B,从一个整数范围(说是N,目测是[1,N],题出的非常模糊)里面各选一个数a和b,然后用一个均匀随机生成器在范围里生成一个数c,看谁离c近赢,相同距离算b赢。

现在输入是N和a,求b选几的时候胜率最大,相同胜率取最小。

样例:3 1 (输出2)、4 3 (输出2),完美的避开了是0还是1开始的问题……

</题干> 卤煮做了40%(还做出过20%,应该是5个点),还想出一个边界条件没写对,不知道剩下的错在哪里。

2. 给定字符串s,由a~z和小数点“.”组成,定义操作a(s),表示将s中最早出现的连续两个点替换成一个点;定义函数f(s),表示进行多少次操作a可以使得字符串中没有连续的点。

输入为n(字符串长度),m(字符串替换操作);第二行为n长字符串;第3行开始的m行,每行有k和c,表示将s中第k个字符(从1开始数,傻叉)替换为c。要求在每次替换后,输出替换后s’当前f(s’)的值。

样例:原来的巨长无比,我就随便编一个:4 1 a..b 4 . (输出2)。

</题干> 水题,只要注意是1开始这个大坑。读入后先计算原始的f(s),然后每次操作后,拿出操作位左右各一位,判断这三位在变化前后的diff,加到原始f(s)即可(当然,过后要真的替换)。

————————————————

2/5的WA啊,哪有这么多边界条件啊,我猜是大数据点输出的时候变成了科学记数法,但是我安装了跟OJ一样的g++版本,并没有被科学……天知道为什么,呵呵哒。

另外理论题考了好多设计模式、算法、数据库的细节题,理论渣表示全靠蒙,不服跑个分。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注