zoukankan      html  css  js  c++  java
  • 2个题

    1. 求比正整数N大的最小正整数M,且M与N的二进制表示中有相同数目的1

    http://www.lai18.com/content/9438565.html

    分析:观察这个题目,其实很有意思,

      a. 使得m比n大,就让n最末尾的1进位,然后看进位后的数少了几个1,就在最后补上几个1.可以用__builtin_popcount来做。

      b. 看上面的讲解,就是那种方法,不过很巧妙,如果没看过,应该做不出来,那个真是神奇!其实我之前看到过,一位日本acm大神写的算法书里面,我忘了名字了,问题是:如何枚举二进制里面只有k个1的数,就是上面链接里讲的方法。有时间找一下,贴一下图片。

      c. 你看了上面的解法,难道不感觉似曾相识么,对,就是它,next_permutation,在所有的排列里面,也是不允许修改每一个数字,只允许移动位置,这里做法就很简单了,从后到前找第一个(01),然后变成(10),接着把后面的字符串翻转即可。当然这个解法需要先把10进制的数字转化为二进制串,执行上面的操作,然后再把二进制串转换为十进制数字。(这种方法对么,仔细思考一下)。

    2.

     

    3

  • 相关阅读:
    初识STM32标准库
    自己写库—构建库函数雏形
    使用寄存器点亮LED等
    新建工程---寄存器版
    什么是寄存器
    初识STM32
    ST-LINK驱动的安装
    MDK5使用技巧
    开发环境的搭建
    1行Python代码制作动态二维码
  • 原文地址:https://www.cnblogs.com/y119777/p/5903323.html
Copyright © 2011-2022 走看看