将集合进行全排列的代码。

如何将一个集合进行全排列?
我的代码是:

#include<iostream>
#include<cstdio> 
using namespace std;
void Prem(int list[],int k,int m)
{
    if(k<m)             //将第k至m个元素进行全排列 
    for(int j=k;j<=m;j++)
    {
        swap(list[k],list[j]);   //将第j个元素与第k个元素交换作为前缀 
        Prem(list,k+1,m);
        swap(list[k],list[j]);   //将交换的元素交换回来,为了不影响下一个排列可能。 
    }
    else //此时为此次排序的最后一步,可以将此次排序输出好进行下一个排序 
    {
        for(int i=0;i<=m;i++)
        cout<<list[i]<<' ';
        cout<<endl;
     } 
}
int main()
{
    int n,i;
    cout<<"请输入list集合的元素个数:";
    cin>>n;
    int list[n];
    cout<<"请输入list集合的元素:"<<endl;
    for(i=0;i<n;i++)
    cin>>list[i];
    int k,m;
      cout<<"请输入k和m"<<endl;
    cin>>k>>m;
    cout<<"全排列为:"<<endl; 
    Prem(list,k-1,m-1);
}
分析:
全排列就是将元素一个个递归提前。

```

有什么问题吗?确实是实现了全排列啊