求助,关于全排列。。。
内容:
输入一列严格递增的正整数,按照字典排列法输出其全排列。
输入说明:
一行,为若干个递增的正整数。
输出说明:
若干行,每行为它的一个排列,按照字典排列法输出。
输入样例:
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));
}
[解决办法]
#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;}