题目名字
递归实现指数型枚举
题意
给一个数n,从1—n中选数,看有多少个
思路
- 简单来说就是设立一个是和否两个分支,这里用了1和0来代替,然后运行,每个分支有交叉点
算法一:递归
实现步骤
- 用一个bool函数来判断
- 设置递归的终止条件
代码
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int n;
bool st[50];//设置bool函数用来判断选不选
void la(int u){
if(u>n){
for(int i=1;i<=n;i++){
if(st[i]==1)//
{
cout<<i<<" ";
}
}
cout<<endl;
return ;
}
st[u]=1;// st[u]=ture;
la(u+1);//加一位继续去判断
st[u]=0;
la(u+1);
//设置两个分支,然后再在每个分支里面再加分支,不断的判断选不选;
}
int main(){
cin>>n;
la(1);//从第一位开始选
return 0;
}
总结
不懂得话先画图,理解