笔试记录 3.14

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。
不过其实后面也没多少时间做第三题了,就是可惜没来得及看看题目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值