1006: 组合的输出(dfs的一种用法)(与排列类似)
题目:1006: 组合的输出
Description
排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r<=n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。
现要求你用递归的方法输出所有组合。
例如n=5,r=3,所有组合为:
l 2 3 l 2 4 1 2 5 l 3 4 l 3 5 1 4 5 2 3 4 2 3 5 2 4 5 3 4 5
Input
包含多组测试数据,每组测试数据占一行,包含两个自然数n、r(1<n<21,0<=r<=n)。
Output
所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列。
Sample Input
5 3
Sample Output
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
思路:dfs的思想和排列一样,有需要可以去看我排列的那篇文章;但在递归的处理上,因为组合和排列其性质的不同,所以其判断有一定的区别;可以通过代码来观察;
代码
#include<stdio.h>void dfs(int ,int );
int n,t;
int queue_number[25];
int main()
{while(scanf("%d%d",&n,&t)!=EOF){//for(int i=1;i<=n;i++)dfs(0,t);}return 0;
}void dfs(int x,int s)
{if(s==0){for(int i=0;i<t;++i){printf("%d",queue_number[i]);if(i!=t-1) printf(" ");else printf("\n");}return;}for(int i=x+1;i<=n;i++){queue_number[t-s]=i;//即这里是与排列不同的,这个是因为组合的序列输出dfs(i,s-1); //直接从小到大即可;}
}
1006: 组合的输出(dfs的一种用法)(与排列类似)相关推荐
- linux 输入、输出重定向的概念和用法详解(Day01)
介绍重定向之前先来介绍几个重要的概念:(笔记不易---- 转载请注明出处) 1.linux 的标准输入与输出 linux标准输入设备指的是键盘,标准输出设备指的是显示器,标准错误输出指的是显示器. ...
- 信息学奥赛一本通(1317:【例5.2】组合的输出)
1317:[例5.2]组合的输出 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 21154 通过数: 10292 [题目描述] 排列与组合是常用的数学方法 ...
- java:P1157 组合的输出
洛谷题目:P1157 组合的输出 题目如下: 我的代码: import java.io.*; /* 思路:dfs思想,其中改进下即可,这样就能够得到不重复的组合. 递归代码提醒:t代表当前函数找第几个 ...
- php代码金字塔几种,php输出金字塔的2种实现方法
本文实例讲述了php输出金字塔的2种实现方法.分享给大家供大家参考.具体分析如下: 下面给大家总结了两种实现金字塔打印的方法,一种是利用了自定义函数,另一种是利用了for循环了,其实两都用到了只是前者 ...
- 【例5.2】组合的输出
[例5.2]组合的输出 链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1317 时间限制: 1000 ms 内存限制: 65536 ...
- 深度搜索 java_java实现的深度搜索与广度搜索算法BFS,DFS以及几种最短路径算法...
java实现的深度搜索与广度搜索算法BFS,DFS以及几种最短路径算法 public class City { String name; int id; static int idCounter = ...
- 写一个26字母和0-9数字 不同长度组合的输出
写一个26字母和0-9数字 不同长度组合的输出,输出全部的时间不能超过2个小时.需要用多线程录 直接上代码 Password类 package com.more.util; import java.u ...
- 如何使用if嵌套结构;实现用户输入个人的身高和体重,计算出国际肥胖指标BMI值,并判断输出您属于 哪种体型
如何使用if嵌套结构:实现用户输入个人的身高和体重,计算出国际肥胖指标BMI值,并判断输出您属于 哪种体型 一.从键盘上获取用户输入的身高和体重的数值 二.计算出国际肥胖指标BMI值 三.根据计算出的 ...
- python倒序输出字符串的6种方法
python倒序输出字符串的6种方法 直接切片法 循环逆序法 列表翻转法 列表增删法(使用原列表操作) 列表增删法(建立空列表操作) 对称交换法 总结 直接切片法 1.通过改变读入字符串的步长为-1完 ...
最新文章
- TinyML设备设计的Arm内核
- Ansible源码解析 Inventory组概念
- 1.7 Java创建对象详解(显式创建和隐含创建)
- 解决编译apache出现的问题:configure: error: APR not found . Please read the documentation
- 【渝粤题库】国家开放大学2021春2503学前儿童健康教育题目
- java holdslock_一种检测Java并发程序代码分支路径lock是否遗漏的方法
- angular4获得焦点事件_Angular 4 文本框自动获取焦点二
- 微信小程序---实现输入手机验证码功能
- java8 Map新增方法的使用
- 中国五大顶级域名9月第一周新增3.2万 美国净减7.6万个
- OpenGL基础51:泛光
- DEJA_VU3D - Cesium功能集 之 007-军事标绘系列一:简单箭头
- WPS服务器维护,wps卸载云服务器
- uIP TCP/IP协议栈在51系列单片机上的应用
- jsp+sql智能道路交通信息管理系统的设计与实现(论文+系统+开题报告+答辩PPT+外文翻译)
- html中文网app,app.vue什么作用?
- 离群值 excel_如何(以及为什么)在Excel中使用离群值函数
- Android简易计算器的制作
- Spring高手之路——深入理解与实现IOC依赖查找与依赖注入
- 采用粒子群优化算法实现投资组合优化【Matlab实现】