生成1~n的排列

#include <iostream>
using namespace std;
void print_permutation(int n,int * A,int cur)
{
    int i,j;
    if(cur == n)  //递归边界
    {
        for(i = 0; i < n; ++i)
        cout << A[i] << ' ';
        cout << endl;
    }
    else for(int i = 1; i <= n; ++i) //尝试在A[cur]中填各种整数i
    {
        int ok = 1;
        for(j = 0; j < cur ; ++j)
        if(A[j] == i)
        ok = 0;
        if(ok)
        {
            A[cur] = i;
            print_permutation(n,A,cur+1);
        }
    }
}
int main()
{
    int A[10],n;
    while(cin >> n)
    print_permutation(n,A,0);
    return 0;
}

输入整数n,按字典序输出前n个数的所有排列。自己打一遍,果然就可以理解了。。

原文地址:https://www.cnblogs.com/fchx/p/2870346.html