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;
}
全部评论

相关推荐

霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务