链接 https://blog.csdn.net/umbrellalalalala/article/details/79792451
[题目] 题目输入整数 n, 按照字典序从小到大的顺序输出前 n 个数的所有排列.
[样例]
- Input
- 2
- Output
- 12
- 21
注意 n 的最大值是 20
[分析] 此题是典型的枚举排列, 只需要用递归, 较为简单
[示例代码]
- #include<stdio.h>
- #include<stdlib.h>
- #define max_n 25 // 一般习惯将数组定义的比最大限制值大一些
- int a[max_n];
- void printf_permutation(int n, int *a, int cur) {
- if (cur == n) {
- for (int i = 0; i < n; i++) printf("%d", a[i]);
- printf("\n");
- }
- else {
- for (int i = 1; i <= n; i++) {
- int ok = 1;
- for (int j = 0; j < cur; j++) {
- if (i == a[j])ok = 0;
- }
- if (ok) {
- a[cur] = i;
- printf_permutation(n, a, cur + 1);
- }
- }
- }
- }
- int main() {
- int n;
- while (scanf("%d", &n) == 1) {
- printf_permutation(n, a, 0);
- }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2561431.html