首页 > 其他 > 详细

N个元素的全排列

时间:2015-03-22 20:55:10      阅读:136      评论:0      收藏:0      [点我收藏+]

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

//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; }

 

N个元素的全排列

原文:http://www.cnblogs.com/Bird-Man/p/4357844.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!