3.14
1h30min
单选、不定项、3编程
前面涵盖mysql、linux命令、哈夫曼编码、……
编程部分
1、16进制数转2进制数后的1的个数
简单,ac
因为16 = 2^4,所以逐位转10进制再转2进制计算个数即可,无需还原整个数字
2、n行m列,0-灯,1-人
每个灯的上、下、左、右 4 个方向都可照射,每个方向上若至少有一个人则可得1分,求所有灯的得分。
ac,应该还有更好的解法
每行、每列分别计算灯的得分情况,以行为例:
无人的情况下,本行所有灯不得分
有人的情况下,灯的得分情况可分为3种:
1.最左侧,右侧有人,均 1’
2.中间,左右都有人,均 2’
3.最右侧,左侧有人,均 1’
以row[0,1,…,n][3],记录每行最左人位置、人数、最右人位置
以col[0,1,…,n][3],记录每列最上人位置、人数、最下人位置
由此可计算每行、列各种情况下每种得分情况的灯的个数,进行分数累计即可。
做这题发生了个很搞笑的情况qwq,自己给自己出的示例算错了答案,导致以为程序错了。
把代码先提交保存后就继续回来debug了,提交测试还需要一段时间所以没有等结果,临近结束才发现其实已经ac了,是自己算错了,太尴尬了qwq。
不过其实后面也没多少时间做第三题了,就是可惜没来得及看看题目。