深搜专题2:组合问题

描述

组合问题就是从n个元素中抽出r个元素(不分顺序且r < = n),

我们可以简单地将n个元素理解为自然数1,2,...,n,从中任取r个数。

例如n = 5 ,r = 3 ,所有组合为:

1 2 3

1 2 4

1 2 5

1 3 4

1 3 5

1 4 5

2 3 4

2 3 5

2 4 5

3 4 5

输入描述

一行两个自然数n、r ( 1 < n < 21,1 < = r < = n )。

输出描述

所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,所有的组合也按字典顺序。

字典顺序及从小到大。

学会去重即可。

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int n,r;
int s[10];
int vis[10];
void dfs(int x,int len){//加入起点传参
    if(len==r+1){//现在不是全排列
        for(int i=1;i<=r;i++){
            cout<<s[i]<<" ";
        }
        cout<<endl;
        return;
    }
    for(int i=x;i<=n;i++){
        if(!vis[i]){
            s[len]=i;
            vis[i]=1;
            dfs(i,len+1);//传入新起点
            vis[i]=0;
        }
    }
}
int main(){
    cin>>n>>r;
    dfs(1,1);
    return 0;
}
相关推荐
车队老哥记录生活1 小时前
【MPC】模型预测控制笔记 (3):无约束输出反馈MPC
笔记·算法
地平线开发者1 小时前
BEV 感知算法评价指标简介
算法·自动驾驶
不过四级不改名6772 小时前
用c语言实现简易c语言扫雷游戏
c语言·算法·游戏
weixin_419658313 小时前
数据结构之二叉树
java·数据结构
C++ 老炮儿的技术栈3 小时前
手动实现strcpy
c语言·开发语言·c++·算法·visual studio
倔强的石头_4 小时前
【数据结构与算法】利用堆结构高效解决TopK问题
后端·算法
倔强的石头_4 小时前
【数据结构与算法】详解二叉树下:实践篇————通过链式结构深入理解并实现二叉树
后端·算法
心.c4 小时前
JavaScript 数据结构详解
前端·javascript·数据结构
哎写bug的程序员4 小时前
leetcode复盘(1)
算法·leetcode·职场和发展
风靡晚4 小时前
用于汽车毫米波雷达的四维高分辨率点云图像
人工智能·算法·机器学习·计算机视觉·汽车·信息与通信·信号处理