题目等价于:在只允许加、减1或乘2的前提下,求从1变到N的最少操作次数。
分析:任意一个中间数m,若m为偶数,则可能由m-1加1得到,或是由m/2乘2得到;若m为奇数,则可能由m-1加1得到,或是由(m+1)/2经过乘2再减1得到,故可得递推式:
n为偶数: f(n) = min{f(n-1)+1, f(n/2)+1}
n为奇数: f(n) = min{f(n-1)+1, f((n+1)/2)+2}
初始值: f(0)=f(1)=0
题目等价于:在只允许加、减1或乘2的前提下,求从1变到N的最少操作次数。
分析:任意一个中间数m,若m为偶数,则可能由m-1加1得到,或是由m/2乘2得到;若m为奇数,则可能由m-1加1得到,或是由(m+1)/2经过乘2再减1得到,故可得递推式:
n为偶数: f(n) = min{f(n-1)+1, f(n/2)+1}
n为奇数: f(n) = min{f(n-1)+1, f((n+1)/2)+2}
初始值: f(0)=f(1)=0