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开始
}


相关文章
|
6月前
|
索引
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
46 0
|
6月前
递归实现指数型枚举
递归实现指数型枚举
30 0
|
6月前
leetcode-6116:计算布尔二叉树的值
leetcode-6116:计算布尔二叉树的值
72 0
|
11月前
递归实现排列型枚举
递归实现排列型枚举
枚举的三种类型--指数型&排列型&组合型
枚举的三种类型--指数型&排列型&组合型
106 0
|
C++
C++ 计算斐波那契数列第100万项的精确整数值
C++ 计算斐波那契数列第100万项的精确整数值
111 0
|
人工智能
(数论)(枚举)(前缀和)1230. K倍区间
(数论)(枚举)(前缀和)1230. K倍区间
89 0