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