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;
}
目录
相关文章
|
BI
7-6 sdut-C语言实验-最长上升子序列
7-6 sdut-C语言实验-最长上升子序列
249 1
7-2 sdut-C语言实验-删数问题(贪心法二)
7-2 sdut-C语言实验-删数问题(贪心法二)
130 2
第k小的数(2种快排解法、1种堆排解法)
第k小的数(2种快排解法、1种堆排解法)
327 0
Online Judge System 中术语含义: OJ、AC、WA、TLE、OLE、MLE、PE、RE、CE
Online Judge System 中术语含义: OJ、AC、WA、TLE、OLE、MLE、PE、RE、CE
4419 0
Online Judge System 中术语含义: OJ、AC、WA、TLE、OLE、MLE、PE、RE、CE
|
BI
7-7 sdut-C语言实验-上升子序列
7-7 sdut-C语言实验-上升子序列
183 0
7-5 sdut-C语言实验-最长公共子序列
7-5 sdut-C语言实验-最长公共子序列
286 0
|
BI
7-6 sdut-C语言实验-最长上升子序列的和
7-6 sdut-C语言实验-最长上升子序列的和
151 2
|
开发工具 git
7-4 sdut-C语言实验-最长公共子序列
7-4 sdut-C语言实验-最长公共子序列
257 1
|
C语言
【数据结构】双向带头循环链表(c语言)(附源码)
本文介绍了双向带头循环链表的概念和实现。双向带头循环链表具有三个关键点:双向、带头和循环。与单链表相比,它的头插、尾插、头删、尾删等操作的时间复杂度均为O(1),提高了运行效率。文章详细讲解了链表的结构定义、方法声明和实现,包括创建新节点、初始化、打印、判断是否为空、插入和删除节点等操作。最后提供了完整的代码示例。
445 0
7-4 sdut-C语言实验-区间覆盖问题
7-4 sdut-C语言实验-区间覆盖问题
187 2

热门文章

最新文章