#3000. 选排列的生成

选排列的生成

题目描述

设有 nn 个整数的集合 {1,2,3,,n}\{1, 2, 3, \dots, n\},从中取出任意 rr 个数进行排列(0<r<n<200 < r < n < 20),请编程输出所有的排列方案。

要求按照字典序输出所有可能的排列。

输入格式

一行,包含两个整数 nnrr,以空格分隔。

输出格式

输出若干行,每行表示一个排列方案,其中 rr 个数字用空格分隔。

最后一行输出 total= 后跟一个整数,表示排列的总方案数。

所有排列必须严格按照字典序升序输出。

样例输入

4 2

样例输出

1 2
1 3
1 4
2 1
2 3
2 4
3 1
3 2
3 4
4 1
4 2
4 3
total=12

数据范围与提示

  • 0<r<n<200 < r < n < 20
  • 字典序规则:比较两个排列时,从左到右逐位比较,数值小的排列在前。
  • 本题要求的是排列(Permutation),即顺序不同视为不同方案。