递归实现排列型枚举

简介: 递归实现排列型枚举

群友问,记录一下:

题目:把 1∼n 这 n 个整数排成一行后随机打乱顺序,输出所有可能的次序。

输入格式:

输入一个整数 n,1≤n≤9。

输出格式:

按照从小到大的顺序输出所有方案,每行 1 个。

首先,同一行相邻两个数用一个空格隔开。

其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。

代码如下:

#include<stdio.h>
int num[10];
int a;
void f(int b,int c){
    if(b==a){
        for(int i=0;i<a;i++){
            printf("%d ",num[i]);
        }
        printf("\n");
        return;
    }
    else{
        for(int i = 1;i<=a;i++){
            if (!((c>>i)&1)){
                num[b++]=i;
                f(b,c|1<<i);
                b--;
            }
        }
    }
}
int main(){
    scanf("%d",&a);
    f(0,0);
}


相关文章
92. 递归实现指数型枚举
92. 递归实现指数型枚举
|
7月前
递归实现指数型枚举
递归实现指数型枚举
32 0
|
7月前
Qsort函数实现对各类型数组中元素的排序(思路简单)
Qsort函数实现对各类型数组中元素的排序(思路简单)
|
算法 程序员 C#
C++二分查找算法:132 模式枚举3
C++二分查找算法:132 模式枚举3
|
算法 测试技术 C#
C++二分查找算法:132 模式解法二枚举2
C++二分查找算法:132 模式解法二枚举2
递归实现排列型枚举
递归实现排列型枚举
48 0
递归实现组合型枚举
递归实现组合型枚举
45 0
|
C语言 C++
编写一个程序,用同一个函数名对n个数据进行从大到小排序,数据类型可以是整型、单精度型。要求用重载函数实现。
编写一个程序,用同一个函数名对n个数据进行从大到小排序,数据类型可以是整型、单精度型。要求用重载函数实现。
递归实现的三种枚举
递归实现的三种枚举
53 0