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


相关文章
|
8月前
|
存储 算法 大数据
C语言中求解数组的最大值和最小值
C语言中求解数组的最大值和最小值
541 0
|
8月前
|
索引
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
【每日一题Day131】LC1144递减元素使数组呈锯齿状 | 贪心+枚举
56 0
|
8月前
【每日一题Day155】LC1630等差子数组 | 枚举+排序
【每日一题Day155】LC1630等差子数组 | 枚举+排序
50 0
|
8月前
递归实现指数型枚举
递归实现指数型枚举
38 0
|
C语言
C 语言实例 - 计算数组元素平均值
C 语言实例 - 计算数组元素平均值
119 4
题目:编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=12!+14!+…+1m!(m是偶数)
题目:编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=12!+14!+…+1m!(m是偶数)
284 0
|
C++
C++ 计算斐波那契数列第100万项的精确整数值
C++ 计算斐波那契数列第100万项的精确整数值
126 0
枚举的三种类型--指数型&排列型&组合型
枚举的三种类型--指数型&排列型&组合型
117 0