求解幂集问题(蛮力法)

简介: 求解幂集问题(蛮力法)

对于给定的正整数n(1<=n<=10),求1~n构成的集合的所有子集(幂集)。


输入格式:

输入1个整数n。


输出格式:

输出1~n构成的集合的所有子集(幂集),一个集合占一行,集合的元素用{}括起来,元素之间用逗号分隔,最后1个元素后面没有逗号


输入样例:

在这里给出一组输入。例如:

3


输出样例:

在这里给出相应的输出。例如:

1. {}
2. {1}
3. {2}
4. {1,2}
5. {3}
6. {1,3}
7. {2,3}
8. {1,2,3}


#include <iostream>
using namespace std;
const int N = 15;
int n;
int a[N];
bool st[N];
void dfs(int n, int sum)
{
    if(sum > n)
    {
        int t = 0;
        cout << "{";
        for (int i = 1; i <= n; i ++ )
            if(st[i])
            {
                if(t ++ ) cout << ',';
                cout << i;
            } 
        cout << "}\n";
        return ;
    }
    st[sum] = false;
    dfs(n, sum + 1);
    st[sum] = true;
    dfs(n, sum + 1);
}
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i ++ ) a[i] = i;
    dfs(n, 1);
    return 0;
}


不考虑顺序:回溯法

#include <iostream>
using namespace std;
const int N = 15;
int n;
int a[N];
bool st[N];
void dfs(int n, int sum)
{
    if(sum > n)
    {
        int t = 0;
        cout << "{";
        for (int i = 1; i <= n; i ++ )
            if(st[i])
            {
                if(t ++ ) cout << ',';
                cout << i;
            } 
        cout << "}\n";
        return ;
    }
    st[sum] = false;
    dfs(n, sum + 1);
    st[sum] = true;
    dfs(n, sum + 1);
}
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i ++ ) a[i] = i;
    dfs(n, 1);
    return 0;
}


目录
相关文章
|
7月前
|
算法 Java C++
非启发式算法——二分、三分搜索算法
非启发式算法——二分、三分搜索算法
221 0
|
算法
蒙特卡罗算法
蒙特卡罗算法
|
机器学习/深度学习 算法 数据处理
无约束最优化(五) 最小二乘法问题的解法
无约束最优化(五) 最小二乘法问题的解法
180 0
蓝桥杯:暴力求解四平方和
蓝桥杯:暴力求解四平方和
59 0
|
存储 算法 Python
基于pythonA*算法两种搜索算法求解八数码问题
基于pythonA*算法两种搜索算法求解八数码问题
280 0
基于pythonA*算法两种搜索算法求解八数码问题
|
算法 Python
秒懂算法 | 蒙特卡罗算法
主元素问题的蒙特卡罗算法分析、设计与Python实战。
251 0
秒懂算法 | 蒙特卡罗算法
|
算法
算法:试证明求平方根的牛顿迭代法一定收敛
算法:试证明求平方根的牛顿迭代法一定收敛
146 0
算法:试证明求平方根的牛顿迭代法一定收敛
蛮力法
蛮力法的主要思想就是用最简单的思路解决问题,一般性能不好,但仍然很重要。
再学一道算法题: 二分法求多项式单根
再学一道算法题: 二分法求多项式单根
再学一道算法题: 二分法求多项式单根
|
存储 机器学习/深度学习 人工智能
乘积量化比之暴力穷举,有哪些进步呢?
乘积量化比之暴力穷举,有哪些进步呢?
乘积量化比之暴力穷举,有哪些进步呢?