当前位置:首页 > 搜索 > 深度优先搜索 > 正文
SSOJ2362组合的输出
5021+

题目大意:从小到大输出1到n里选r个数的所有组合,每个组合一行,每个各个数字占3位。

题目描述

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

输出

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

样例输入

5 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里面选,组合数后面的数要比前面的大,只能从前一个格子那个数后面开始选数字。(全排列有问题,请先看上一篇文章)

程序实现

About

坚决不Copy代码!

本文标签:,,,,,,

SSOJ2362组合的输出:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!