剑指offer-拓展训练-字符的所有组合-全组合
2024-09-02 12:22:39
/*
题目:
给定不含重复字符字符串的全组合。
*/
/*
思路:
递归法。
例给定abc,输出的组合长度为1,2,3.
对于长度为2的组合,分选择a(ab,ac)和不选择a的情况(bc)。
选择a,则在剩余字符串中选择长度为1的字符组合;
不选择a,则在剩余字符串中选择长度为2的字符组合。
*/
#include<iostream>
#include<stdio.h>
#include<string> using namespace std; string curr; void combination(string str,int len,int beginIndex){
//当遍历到字符串的末尾,但所需长度不够,直接返回。
if(beginIndex == str.size() && len != 0){
return;
}
//当长度足够,则输出当前字符串。
if(len == 0 ){
cout<<curr<<" ";
}else{
//选择当前字符串的情况
curr+=(str[beginIndex]);
combination(str,len-1,beginIndex+1);
//不选择当前字符串的情况
curr.erase(curr.size()-1);
combination(str,len,beginIndex+1);
}
} int main(){
string str;
while(getline(cin,str)){
if(str == "")
cout<<endl;
else{
for(int len = 1; len <= str.size(); len++){
combination(str,len,0);
cout<<endl;
} } } }
最新文章
- js get browser vertion (js获取浏览器信息版本)
- RMB转换人民币大小金额
- Cube Stacking
- SmartZoneOCR识别控件免费下载地址
- Eclipse的中文字体设置
- centos在yum install报错:Another app is currently holding the yum lock解决方法
- 解决高版本 Google Chrome 扩展程序强制停用问题 -摘自网络
- Enterprise Architect使用教程
- CSS3新特性罗列
- ARCGIS切图:TPK文件的空间参考为地理坐标系
- 拾人牙慧篇之———QQ微信的第三方登录实现
- Django2 Django MTV模板
- VMware虚拟机安装Linux系统后IP配置(二)
- [MicroPython]TurnipBit开发板DIY自动浇水系统
- SharePoint Framework 基于团队的开发(一)
- C#生成真值表
- BZOJ.4894.天赋(Matrix Tree定理 辗转相除)
- Scalable MySQL Cluster with Master-Slave Replication, ProxySQL Load Balancing and Orchestrator
- 如何使用ASP.NET开发基于推技术的聊天室?
- e796. 设置JSlider的方向