阅微客栈 » 头脑风暴

自然数按一定运算变为1的运算次数

(4 posts)
  • 发起于 1 年 之前,作者 king
  • 最新回复 来自于 lemonutzf

Tags:

  1. 自然数变化规则:
    偶数:除以2
    奇数:加1或者减一
    直到运算结果为1,程序终止!
    例如:
    7 +1 =8
    8 /2 =4
    4 /2 =2
    2 /2 =1 结束
    运算次数为4次
    当然所求的次数应该是最小的!!!!

    发布于 1 年 之前 #
  2. 这样是不是最优的?

    从末位做起,
    如果为0,则除2。
    如果为1,考虑倒数第2位
    如果为1,则加1除2。
    如果为0,则减1除2。

    发布于 1 年 之前 #
  3. 我也是这样想的
    但是这个不一样是最优的吧?
    因为倒数第三位也有可能影响吧?
    后来我想 是不是要像八皇后一样,吧所有的步骤做一遍,然后求得最少的次数。
    但效率低下

    发布于 1 年 之前 #
  4. zhang 的算法对3来说就不是最优。 得稍微修改一下。从高位做, 对于第一段连续的1,如果个数>3用+1除以2,<3用-1除以2。 以后的连续1段用 zhang的策略就行

    发布于 7 月 之前 #

该主题的 RSS Feed

回复

你必须 登录 后发帖。