首页 > 华为4.8笔试第二道题,标准答案是否有错
头像
Goulart-szu
编辑于 2020-04-09 15:47
+ 关注

华为4.8笔试第二道题,标准答案是否有错

牛客网已有同学上传AC题解,但发现结果并不是最优解。
标准答案应该也是和这位同学一样,走一遍遍历,00替换成10,然后010替换成001,001再转换为101,但可以找到反例:
10110,用上述方法作答,得到结果是10110,但其实最大结果应该是11011。
做法是找规律:
如果0的个数大于等于1,可以把除了最高位的0之外的0都通过10->01往前移,最终把所有排在地位的0都移到最高位0的左边,
接下来才实施00->10操作,这样高位的1会越来越多。
找一下规律,其实最优解都是至多只有一个0,它的位置在(最高位0(原二进制数)的位置+除它之外0的个数)这个地方,其余n-1个数都是1。
第一道AC,第二道一直30%,不知道能不能过。

全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐