dfs小练习

递归实现指数型枚举

https://ac.nowcoder.com/acm/contest/998/A

代码注释中解释了题目

using namespace std;
int a[20];
int used[20];
int n;
void dfs(int t,int num,int j){//t作为已经选择数的个数 num作为每次要选择数的个数 
    //j记录上次选择的数字  可以通过此 枚举下一个数字  (题目要求升序)
    if(t==num){
        for(int i =0;i<num;i++){
            cout<<a[i]<<" ";
        }
        cout<< endl;
        return;
    }
    for(int i =j+1;i<=n;i++){
//         if(used[i]){
//             a[t]=i;
//             used[i]=1;
//         }
        a[t]=i;//放进数组
        dfs(t+1,num,i);//dfs
    }
}
int main(){
    cin >> n;
//     for(int i =0;i<n;i++){
//         a[i]=i+1;
//         used[i]=0;
//     }
    for(int i =0;i<=n;i++){
        dfs(0,i,0);
    }
    return 0;
}
全部评论

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务