最近开始拍TC的陈题,这应该算是第二套AK的题目了吧,题目不是很难,很适合练习拍代码的速度。。。
250分:Prefix Code
这题单纯的暴力过的,枚举第i个串是不是其他串的前缀,利用一个函数直接判定,这样的时间复杂度为O(n^2)对于n<=50的数据来说完全没有问题。
500分:Birthday
判断当前时间之后第一个过生日的人的日期,简单的排序即可,注意人名都是字母,用"0000"表示当前的时间对应的人名,这样把全部的人加上这个哨兵总共n+1个元素进行排序,最后输出哨兵的后一位元素,查找是线性的查找,总共的复杂度为O(nlogn),即排序的复杂度。
注意当哨兵是最后一个的时候输出第一个元素,这里取模来直接达到这个效果。
1000分:Merge Sort
叫你模拟归并排序的过程,输出比较次数,直接手写归并排序,遇到比较就计数器加1,模拟完就返回结果,注意题目要求的划分方式和合并方式和我们一般写的代码有差距,如果两个子数组的个数不同,那么要求前一个的元素个数小于后面的元素个数,当两个子数组的头元素相等的时候,将两个元素都放入父亲结点对应的数组,这样比较次数为1次,而不是先随便放入一个,剩下一个和后面的元素比较。
总结:这套题适合用于提高编码能力,要求能在最短的时间内模拟出结果,三题应该都算是模拟题,第二题的排序可以用系统库函数直接处理,无需手写。