首页 > 其他 > 详细

递归实现指数型枚举

时间:2020-02-26 15:40:47      阅读:121      评论:0      收藏:0      [点我收藏+]

递归实现指数型枚举

状态压缩:

分别遍历每一个状态即可。

#include<iostream>
using namespace std;
int main(){
    int n;cin>>n;
    for(int i=0;i<=(1<<n)-1;++i){
        bool flag=0;
        for(int j=0;j<=n-1;++j)
            if(i>>j&1) cout<<(flag?" ":"")<<j+1,flag=1;
        cout<<"\n";
    }
}

递归方法:

对每一个数字进行选择

n=int(input())
def dfs(i,x):
    if i==n:
        for j in range(n):
            if x>>j&1==1:
                print(j+1,end=' ')
        print("")
        return
    dfs(i+1,x)
    dfs(i+1,x|1<<i)
dfs(0,0)

递归实现指数型枚举

原文:https://www.cnblogs.com/CADCADCAD/p/12367232.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!