//n从1开始,可以对n加1,或者加倍,要使n为2014的步数
1、2014的二进制为11111011110,需要的步数是2的最大幂次(加倍)加上最高位后面为1(加1)的个数。
2014>2^10;
10+8=18
2、程序计算
int minimum_step(int n){
vector<int> dp(n+1);
dp[1]=0;
for(int i=2;i<=n;i++){
dp[i]=dp[i-1]+1;
if(i%2==0)
dp[i]=min(dp[i],dp[i/2]+1);//
}
return dp[n];
}
3、直接推导
2014->1007*2->1006+1->503*2->502+1->251*2->250+1->125*2->124+1->62*2->31*2->30+1->15*2->14+1->7*2->6+1->3*2->2+1->1*2