N个元素的全排列

采用递归的方式,代码如下

//C++中函数如不先声明,则被调函数必须先于调用函数
#include<iostream> using namespace std; char input[50]; int n;
//交换数字
void swap(char *a,char *b) { char temp=*a; *a=*b; *b=temp; }
//打印一次排列结果
void printResult() { for(int i=0;i<n;++i) { cout<<input[i]; } cout<<endl; }
//核心代码,递归实现全排列
void arrange(int m) { if(m==n-1) { printResult(); }else{ for(int i=m;i<n;i++) {
//每个需要排列的元素都需要打头 swap(
&input[m],&input[i]); arrange(m+1); swap(&input[m],&input[i]); } } } int main(int argc, char const *argv[]) { char temp;
//输入函数
while((temp=cin.get())!='\n') { if (temp>='0'&&temp<='9') { input[n++]=temp; }else { cout<<"Invalid input"<<endl; return 0; } } arrange(0); return 0; }

 

posted @ 2015-03-22 19:52  Bird-Man  阅读(804)  评论(0编辑  收藏  举报