当前位置: 首页 > news >正文

组合数dfs

 

组合数

题目描述

排列与组合是常用的数学方法,其中组合就是从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<=r<=n<=20)

输出格式

所有的组合,每一个组合占一行(每两个数之间用一个空格隔开),且其中的元素按由小到大的顺序排列,所有的组合也按字典顺序。

样例输入1

5 3

样例输出1

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
10

#include<bits/stdc++.h>
using namespace std;
int n,a[25],r,t;
bool v[25];
void dfs(int d){if(d==r+1){for(int i=1;i<=r;i++)printf("%d ",a[i]);puts("");t++;return ;}for(int i=a[d-1]+1;i<=n;i++){if(!v[d]){v[d]=1;a[d]=i;dfs(d+1);v[d]=0;}}
}
int main(){cin>>n>>r;dfs(1);printf("%d\n",t);//	printf("total=%d\n",total);
} 


http://www.mrgr.cn/news/7931.html

相关文章:

  • Ruby宝石光芒:探索SEO优化的瑰宝工具与库
  • 【Python】家庭用电数据分析Prophet预测
  • 【C++ Primer Plus习题】4.10
  • (贪心) LeetCode 45. 跳跃游戏 II
  • PV、UV、IP:网站流量分析的关键指标
  • viscode 自定义片段,快速生成自己的开发模板
  • java 字符串判断非空工具类 不用依赖
  • vue+uniapp
  • 树莓派与STM32(RT1064)的串口通信实现
  • Android 12中读写SD卡,提示Operation not permitted问题处理
  • 职场人士必备!2024年流行思维导图软件
  • 二叉搜索树
  • 【C语言】常见文件操作
  • 后端Web之登录校验(下篇)
  • Jupyter Notebook 使用多个Kernel
  • 日常开发规范
  • C# 使用OpenCV 类VideoCapture 和 Mat的正确方法
  • 【五】阿伟开始学Kafka
  • docker系列12:Dockerfile实战
  • MAVEN 3.9.1安装