【hihoCoder 1410】Powers of Two

Powers of Two(题目链接)

思路

利用递归,返回每次最小的个数。

代码

#include <iostream>
using namespace std;

int f(int n){
    int sum = 1;
    while(n > sum){//寻找恰比n大的2^k的数
        sum *= 2;
    }
    if(sum == n)//若相等,则可以直接用2^k表示
        return 1;
    int t1 = f(n - sum/2);//加上下一个数
    int t2 = f(sum - n);//减去下一个数
    if(t1 > t2)
        return t2 + 1;  
    return t1 + 1;  
}

int main(){
    int n ;
    cin >> n;
    cout << f(n) << endl;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • 此篇文章主要为了记录他们之间的区别,经常听到SpringSprintMVCStruts是什么呢? Spring: ...
    __Andy__阅读 1,720评论 1 1
  • 文|时光恰巧 参赛编号:436 有的人活着他已经死了。有的人死了他还活着。有的人变成虫子,活着亦等于死了。 从来没...
    时光恰巧阅读 416评论 6 15
  • 眼看着就要26岁了,我都已经记不得她离开的时间,隐约是三四年吧。 她还会想起我吗 想起的时候会是什么样的感情呢
    泽熙Joe阅读 64评论 0 0
  • 每天总是凌晨才休息,不是因为忙,而是太过无聊!时间对于我好像静止般,过去和现在并未有多大区分。人总是要往前看,所以...
    嘉渔阅读 264评论 0 0