其他分享
首页 > 其他分享> > 基于递归的全排列

基于递归的全排列

作者:互联网

算法思想:
对于一组数1,2,3…n;

其他的以此类推…

/*
全排列
*/#include#includeusing namespace std;int n;void print(vector<int> b){
	for(auto i:b){
		cout<<i<<" ";
	}
	cout<<endl;}void inserts(int k, int num, vector<int> b){
	if(b.size()==n){//输出到n阶乘的所有排列
		print(b);
		return;
	}
	if(k==1){
		b.push_back(num);
		inserts(k+1, num+1, b);
	}else{
		for(int i=0; i<k; i++){
			b.insert(b.begin()+i,num);
			inserts(k+1, num+1, b);
			b.erase(b.begin()+i);
		}
	}}int main(int argc, char const *argv[]){
	vector<int> b;
	cout<<"输入一个n阶全排列:";
	cin>>n;
	inserts(1, 1, b);
	return 0;}

在这里插入图片描述
基于此全排列,我们可以间接得到字符串如"abcd"的全排列。

标签:inserts,基于,排列,cout,递归,int,num,排序
来源: https://blog.51cto.com/u_14175378/2760033