欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组的全排列

程序员文章站 2024-03-24 12:28:34
...
#include <iostream>

using namespace std;

template<class Type>
inline void Swap(Type &a, Type &b)
{
    Type temp=a;
    a=b;
    b=temp;
}
template <class Type>
/*
算法Perm(list,k,m)递归地产生所有前缀是list[0:k-1],且后缀是list[k:m]的全排列的所有排列。
全排列从k位置开始,到m位置结束。
*/
void Perm(Type list[], int k, int m)
{
    if(k==m)
    {
        for(int i=0;i<=m;i++)
        {
            cout<<list[i];
        }
        cout<<endl;
    }
    else
    {
        for(int i=k;i<=m;i++)
        {
            Swap(list[k],list[i]);
            Perm(list,k+1,m);
            Swap(list[k],list[i]);
        }
    }
}
int main()
{
    int a[]={1,2,3};
    Perm(a,0,2);

    return 0;
}


数组的全排列

转载于:https://my.oschina.net/u/923087/blog/279193