题解 | #2的幂次方# 使用dfs

2的幂次方

https://www.nowcoder.com/practice/7cf7b0706d7e4b439481f53e5fdac6e7

#include <iostream>
using namespace std;
// 2^15=32768, 2^14=16384
void getExp(int *exp){
    exp[0]=1;
    for(int i=1;i<15;i++){
        exp[i]=exp[i-1]*2;
    }
}
string dfs(int n, int* exp){
    string ans;
    if(n==0) ans+='0'; // 样例不会输入0,此处为了得到递归 dfs(0)=0
    for(int i=14;i>=0;i--){
        if(exp[i]<=n){
            n-=exp[i];
            if(i==1) ans+="2"; // 2(1)=2单独处理
            else {
                ans+="2("+dfs(i,exp)+")";
            }
            if(n!=0) ans+='+'; // 说明当前层尚未求出完全解,添一个 +
        }
    }
    return ans;
}
int main() {
    int exp[15];
    getExp(exp);
    int n;
    while(cin>>n){
        cout<<dfs(n,exp)<<endl;
    }
    return 0;
}

全部评论

相关推荐

后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
06-07 19:59
门头沟学院 C++
补药卡我啊😭:都快15年前的了还在11新特性
你的简历改到第几版了
点赞 评论 收藏
分享
uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务