有序的全排列算法

代码:

#include<iostream>
#include<cstring>
#include<fstream>
#include<algorithm>
using namespace std;
int n,a[50];
void print(int* a)
{
    cout<<a[0];
    for(int i=1; i<n; i++)
        cout<<" "<<a[i];
    cout<<endl;
}
void Arrange(int* a)
{
    print(a);
    for(int i=n-2; i>=0; i--)
        for(int j=n; j>=i+1; j--)
            if(a[i]<a[j])
            {
                int temp=a[j];
                for(int k=j; k>i; k--) a[k]=a[k-1];
                a[i]=temp;
                sort(a+i+1,a+n);
                Arrange(a);
            }
}
int main()
{
    //freopen("in","r",stdin);
    //freopen("out","w",stdout);
    while(cin>>n&&n)
    {
        for(int i=0; i<n; i++) cin>>a[i];
        sort(a,a+n);
        Arrange(a);
        cout<<endl;
    }
}

运行结果:(文件输入)

posted @ 2013-12-29 16:08  Jav  阅读(254)  评论(0编辑  收藏  举报