这次机试算简单,对于学过一小段ACM时间的同学来说我觉得都应该AK,但是不论是出于经验不足还是不够重视还是本就菜,导致最后一题没A出来。
1.打车要10s等待时间,速度为10m/s,走路不等待,速度为1m/s,给定一个路程(m),请输出打车快还是走路快(25分,纯送)
本质判断d>=d/10+10,如果要通分就是10*d>=d+100,但是脑抽了好一会儿,后面的100我还写的10,花了快五分钟在这里验证表达式。
2.假设a-z的环是首尾相连的,从一个字符变相邻的字符记作一步,给定一个纯小写字符串,求这个字符串全部变成同一个字符要多少步骤?(25分)
我想了一小会就转化出来了,就是暴力枚举每个字母,合计26个可能的情况。然后这个首尾相连的操作就是先对26取模,后面判断是否大于12,如果大于那么就变成26-这个数。
3.给定一个纯数字串s(s<=100000)和一个k,请问s中的多少个连续子串表达的数小于k?(25分)
前面基础题最变态的一题,想了我老半天,最后发现是连续子串,难度降低一万倍。但即便如此也很难模拟。我估计理论上这题是可以拉分的,但是感觉就是拉不开哪怕有一点蓝桥杯经历的学生。
首先先把k数量级的算出来记为klen,有大用。
如果子串的长度小于k的数量级,那么一定可以成功,然后你去发现由于这个是连续的,所以这一段实质上是从len加到len+1-klen的等差数列。
然后讨论恰好长度为klen的子串,那么就一个一个遍历了。从第i到第i+klen-1个位置,这个值的变化就等于(原值%pow(10,klen-1))*10+ai-'0',然后一个一个判断是否小于k。
4.模拟链表,先把第一第二换序,再把倒一倒二换序,求最后的序列(25分,纯送)
5.一个网格grid,2坏苹果1好苹果0没苹果。传播只有上下左右四个方向,请问把所有的好苹果变坏需要多久?如果总有好苹果请输出-1。
这个题目比较特殊,这个给死了模版是面向对象,这个只是一个小模块,如果不用这个模版方法就0分。所以我只好顺着这个垃圾模版写下去了。
bfs的框架搭出来了,给定的传参数据是grid,vector<vector<>>类型。然后我就懵逼了,这个没有一个已经遍历的数组,做的很蹩脚。
我到最后的bfs的判定条件也一直在用grid数组本身,难怪搞半天遍历不下去,只能遍历第一行。
如果现在我来,我一定重新复制一份数组,就能把这个题跑通。
搞了半天,这个机试时间只有一小时也是坑人。如果时间再宽裕一点,那也不好说。
现在考虑到保密性,后期我会再把这个帖子完善。