codeup|输出全排列

输出3的全排列
代码

#include<stdio.h>

const int maxn = 11;

int n, P[maxn], hashTable[maxn] = {
    
    false};//P:当前排列,hashTable记录x是否已经在P中

void generateP(int index) {
    
    //当前处理排列的第index位
    if (index == n + 1) {
    
    //递归,已经处理完排列的1~n位
        for (int i = 1; i <= n; i++) {
    
    
            printf("%d", P[i]);
        }
        printf("\n");
        return;
    }
    for (int x = 1; x <= n; x++) {
    
    
        if (hashTable[x] == false) {
    
    
            P[index] = x;//将x加入当前排列
            hashTable[x] = true;
            generateP(index + 1);//处理排列的第index+1位
            hashTable[x] = false;//已经处理完P[index]为x的子问题,还原状态
        }
    }
}
    int main() {
    
    
        n = 3;//欲输出1~3的全排列
        generateP(1);//从P[1]开始填
        return 0;
    }


猜你喜欢

转载自blog.csdn.net/weixin_43340821/article/details/114376847
今日推荐