递归算法之排列问题,问题的描述是这样的,给定一串数字,输出这串数字的全排列。
#include <iostream> using namespace std; int result=0; void Swap(int *data,int a,int b) { int temp; temp=data[a]; data[a]=data[b]; data[b]=temp; } void Perm(int *data,int k,int m) { if(k==m) { for(int i=0;i<m;i++) cout<<data[i]; cout<<endl; result++; } else for(int i=k;i<m;i++) { Swap(data,k,i); Perm(data,k+1,m); Swap(data,k,i); } } int main() { int num; int *data; cout<<"请输入数据个数:"<<endl; cin>>num; cout<<"请输入数据:"<<endl; data=new int[num]; for(int i=0;i<num;i++) cin>>data[i]; cout<<"各种序列:"<<endl; Perm(data,0,num); cout<<"共有"<<result<<"种"<<endl; return 0; }