读书人

关于全排列。

发布时间: 2012-03-29 12:53:12 作者: rapoo

求助,关于全排列。。。
内容:
输入一列严格递增的正整数,按照字典排列法输出其全排列。

输入说明:
一行,为若干个递增的正整数。

输出说明:
若干行,每行为它的一个排列,按照字典排列法输出。


输入样例:
1 3 7

输出样例:
1 3 7
1 7 3
3 1 7
3 7 1
7 1 3
7 3 1


应该怎么做啊。。。。。。。。

[解决办法]
可以用现成的next_permutation
#include <algorithm>
#include <iostream>
using namespace std;

int main(){
char DataBuf[] = { '1', '2', '3'}; //输入自己改下
int i;
#define LENGTH (sizeof(DataBuf)/sizeof(DataBuf[0]))
do{
for(i=0;i < LENGTH;i++)
{
cout << DataBuf[i] << " ";
}
cout << endl;
}while(next_permutation(DataBuf,DataBuf+LENGTH));
}

[解决办法]

C/C++ code
#include<stdio.h>#include<stdlib.h>#define max 5void display(int a[])//display the elements{    int i;    for(i=0;i<max;++i)    {        printf("%d ",a[i]);    }    printf("\n");}void permutation(int n,int a[])//permutation;{    int i,j,temp;    if(n==1)    {        display(a);    }    else    {        for(i=0;i<n;++i)        {            permutation(n-1,a);            temp=a[0];            for(j=0;j<n;++j)            {                a[j]=a[j+1];            }            a[j-1]=temp;        }    }}int main()//the main function;{    int a[max];    int i;    for(i=1;i<=max;++i)    {        a[i-1]=i;    }    printf("The elements is----->: \n");    for(i=0;i<max;++i)    {        printf("%d\t",a[i]);    }    printf("\n");    printf("After permutation is: \n");    permutation(max,a);    return 0;} 

读书人网 >C++

热点推荐