7-8 sdut-C语言实验-全排列问题

简介: 7-8 sdut-C语言实验-全排列问题

7-8 sdut-C语言实验-全排列问题


分数 20


全屏浏览


切换布局


作者 马新娟


单位 山东理工大学


从n个不同元素任取m(m<=n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列,当m=n时所有的排列情况叫全排列。现输入n个递增的数,请你输出这n个数的全排列。全排列输出顺序如样例所示。


###输入格式:

第一行先输入一个整数n(1<=n<=10)。


接下来是一行输入n个由空格分开的互不相同的整数num (1 <= num <= 90000)。


###输出格式:

对于每组数据,每一种排列占一行,各元素间用逗号隔开。


###输入样例:

1. 3
2. 1 2 3


###输出样例:

1. 1,2,3
2. 1,3,2
3. 2,1,3
4. 2,3,1
5. 3,1,2
6. 3,2,1


代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB


#include<stdio.h>
#include<stdlib.h>
int a[15], vis[15], b[15];
int n;
void next_(int k, int m){
    int i;
    if(k == m + 1){
        for(i = 0; i <= m; i++){
            if(i == 0) printf("%d", b[i]);
            else printf(",%d", b[i]);
        }
        printf("\n");
    } else{
        for(i = 0; i <= m; i++){
            if(vis[i] == 0){
                vis[i] = 1;
                b[k++] = a[i];
                next_(k, m);
                k--;
                vis[i] = 0;
             }
        }
    }
}
int main()
{
    int n;
    scanf("%d", &n);
    for(int i = 0; i < n; i++){//max
        scanf("%d", &a[i]);
    }
    next_(0, n - 1);
    return 0;
}
目录
相关文章
|
3月前
7-2 sdut-C语言实验-删数问题(贪心法二)
7-2 sdut-C语言实验-删数问题(贪心法二)
25 2
|
3月前
|
BI
7-7 sdut-C语言实验-上升子序列
7-7 sdut-C语言实验-上升子序列
20 0
|
3月前
7-4 sdut-C语言实验-区间覆盖问题
7-4 sdut-C语言实验-区间覆盖问题
24 2
|
3月前
|
算法
7-2 sdut-C语言实验-数字三角形问题
7-2 sdut-C语言实验-数字三角形问题
15 1
|
3月前
7-10 sdut-C语言实验-走迷宫
7-10 sdut-C语言实验-走迷宫
19 2
|
3月前
7-8 sdut-C语言实验-取数字问题
7-8 sdut-C语言实验-取数字问题
21 2
|
3月前
7-1 sdut-C语言实验-递归的函数
7-1 sdut-C语言实验-递归的函数
20 2
|
3月前
6-1 sdut-C语言实验-递归函数之快速排序
6-1 sdut-C语言实验-递归函数之快速排序
16 1
|
3月前
6-2 sdut-C语言实验-递归函数之快速排序
6-2 sdut-C语言实验-递归函数之快速排序
20 1
|
3月前
|
机器学习/深度学习 安全
7-3 sdut-C语言实验-小鑫去爬山
7-3 sdut-C语言实验-小鑫去爬山
23 2