92. 递归实现指数型枚举

简介: 92. 递归实现指数型枚举

7bb6598f509145c8b4ed2e4777d68bac.png 代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 18;
int n;
int vis[maxn]; // 选 or 不选
int a[maxn];
int f(int x)
{
     if (x == n)
     {
          for (int i = 1; i <= n; i++)
          {
               if (vis[i])
                    cout << a[i] << " ";
          }
          cout << endl;
          return 0;
     }
     else
     {
          vis[x + 1] = 1;
          f(x + 1);
          vis[x + 1] = 0;
          f(x + 1);
     }
}
int main()
{
     cin >> n;
     for (int i = 1; i <= n; i++)
     {
          a[i] = i;
     }
 
     f(0); // 从0开始
}


或者f(1):

#include <bits/stdc++.h>
using namespace std;
const int maxn = 18;
int n;
int vis[maxn]; // 选 or 不选
int a[maxn];
int f(int x)
{
     if (x > n)//f(1)开始,所以x > n 时结束
     {
          for (int i = 1; i <= n; i++)
          {
               if (vis[i])
                    cout << a[i] << " ";
          }
          cout << endl;
          return 0;
     }
     else
     {
          vis[x] = 1;//选
          f(x + 1);
          vis[x] = 0;//不选
          f(x + 1);
     }
}
int main()
{
     cin >> n;
     for (int i = 1; i <= n; i++)
     {
          a[i] = i;
     }
 
     f(1); // 从1开始
}


相关文章
|
3月前
|
算法 搜索推荐 程序员
第五十练 请以递归方式实现计算给定数字的幂的函数
第五十练 请以递归方式实现计算给定数字的幂的函数
17 4
|
3月前
|
人工智能 测试技术
【位运算 状态压缩 枚举子集】1178. 猜字谜
【位运算 状态压缩 枚举子集】1178. 猜字谜
|
3月前
|
存储 算法 测试技术
位运算、状态压缩、枚举子集汇总
位运算、状态压缩、枚举子集汇总
|
3月前
递归实现指数型枚举
递归实现指数型枚举
21 0
|
8月前
递归实现排列型枚举
递归实现排列型枚举
|
C++
C++ 计算斐波那契数列第100万项的精确整数值
C++ 计算斐波那契数列第100万项的精确整数值
85 0
枚举的三种类型--指数型&排列型&组合型
枚举的三种类型--指数型&排列型&组合型
|
人工智能
(数论)(枚举)(前缀和)1230. K倍区间
(数论)(枚举)(前缀和)1230. K倍区间
77 0