• 92.递归实现指数类型枚举


    原题链接:92. 递归实现指数型枚举

    解题思路

    这等价于每个整数可以选可以不选,所有可能的方案总数有2的n次方种,通过前两节的学习我们已经知道可以进行一次循环,利用位运算来列举所有的选择方案。这一次我们使用递归来求解,在每一次递归中分别尝试某个数“选”还是“不选”两条分支,将尚未确定的整数数量减少1,从而转化为一个规模更小的同类问题。

    样例代码

    #include <iostream>
    using namespace std;
    
    vector<int> chosen;
    
    void calc(int x) {
          if(x == n+1) { //边界问题
                for(int i = 0;i < chosen.size(); i++)
                      pritnf("%d ", chosen[i]);
                puts("");
                return;
          }
          //“不选x”分支
          calc(x+1);
          //“选x”分支
          chosen.push_back(x);//记录x已经被选择
          calc(x+1);//求解子问题
          chosen.pop_back();//准备回溯到上一个问题之前,还原现场      
    }
    int main(){
          calc(1);//主函数中的调用入口
    }
    
  • 相关阅读:
    mailing list的原理
    关于结构体的使用
    c++ template
    IDA逆向
    重定向 301 302
    linux信号
    cmake编译选项
    mongodb超时
    普通java工程的resources目录寻址
    Vue基础---->VueJS的使用(二)
  • 原文地址:https://www.cnblogs.com/hnkjdx-ssf/p/14155688.html
Copyright © 2020-2023  润新知