递归字符串全排列_java全排列用递归实现[通俗易懂]

递归字符串全排列_java全排列用递归实现[通俗易懂]1.全排列函数next_permutation(beg,end)2.auti()//将字符串转化为整型**万能头文件#includebits/stdc++.h**3.**stringstream**的int型转为string型用法_auti函数

导航

1.全排列函数next_permutation(beg,end)
2.auti() //将字符串转化为整型
万能头文件 #include < bits/stdc++.h>
3.stringstream的int型转为string型用法
——————————————————————————————————— 1.全排列:可以推举出所有可能性
头文件:#include < algorithm>

例1:(int型)

#include <iostream>
using namespace std;
#include <algorithm>
int main()
{ 
   
	int a[] = { 
   1,3,2}; //如果数组中数不是升序的话
	sort(a,a+len);  //注意要排一下序
	int len = sizeof(a)/sizeof(a[0]); //计算出数组中数量 
	do{ 
   
		for(int i=0;i<len;i++)
		{ 
   
			cout<<a[i];
		}
		cout<<endl;
	}while(next_permutation(a,a+len)); //这个函数返回的是bool类型,没有更多排列返回false 
	return 0;
} 

运行结果:
在这里插入图片描述
例2:(string型)

#include <iostream>
using namespace std;
#include <algorithm>
#include <string>
int main()
{ 
   
	string s;
	cin>>s;
	do{ 
   
		cout<<s<<endl;
	}while(next_permutation(s.begin(),s.end())); 
	return 0;
} 

运行结果:
在这里插入图片描述
例3:(vector容器)

#include <iostream>
using namespace std;
#include <algorithm>
#include <vector>
int main()
{ 
   
	vector<int> v;
	for(int i=0;i<=2;i++)
	{ 
   
		v.push_back(i);
	}
	do{ 
   
		for(vector<int>::iterator it=v.begin();it!=v.end();it++) //迭代器遍历
		{ 
   
			cout<<*it;
		}
		cout<<endl;
	}while(next_permutation(v.begin(),v.end())); //放入迭代器
	return 0;
} 

运行结果:
在这里插入图片描述

手动写一个递归全排列:
在这里插入图片描述
学习网址:https://www.bilibili.com/video/av65164273?from=search&seid=12828774151800623150

使用for循环

#include <stdio.h>
int main()
{ 
   
	int a,b,c;
	for(a=1;a<=3;a++)
		for(b=1;b<=3;b++)
			for(c=1;c<=3;c++)
				if(a!=b&&a!=c&&b!=c)
					printf("%d%d%d\n",a,b,c);
		
	return 0;
} 

运行结果
在这里插入图片描述
———————————————————————————————————
2.atoi() //将字符串转化为整型

要保证atoi中是char*型

c语言

#include <stdio.h>
#include <stdlib.h> //要加头文件 
int main()
{ 
   
	char *s = "123";  //放到atoi中要char*型 
	int a = atoi(s);
	printf("%d",a);  //输出123
	return 0;
}

c++

#include <iostream>
using namespace std;
#include <stdlib.h>
int main()
{ 
   
	string s = "123";
	int a = atoi(s.c_str()); //中间要转换为char*型
	cout<<a<<endl;
	return 0; 
}

———————————————————————————————————
3.stringstream的int型转为string型用法

#include <iostream>
#include <sstream> //要添加头文件 
using namespace std;
int main()
{ 
   
	int a = 145;
	string b;
	stringstream ss;  //定义 
	ss<<a;//传入 
	ss>>b;//转成string型 
	
	if(b == "145")
	{ 
   
		cout<<"相同类型"<<endl; 
	} 
	else
	{ 
   
		cout<<"不同类型"<<endl;
	}
	return 0;
}

今天的文章递归字符串全排列_java全排列用递归实现[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86700.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注