输出全排列--循环+递归
2016-03-16 14:38
288 查看
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
void PrintOrder(const string& pre,const string& ext)
{
if (ext.length()==1)
{
//如果后缀只剩一个字符,输出当前顺序,递归结束
cout<<pre<<ext<<endl;
}
else
{
//如果后缀长度大于1,每次把后缀中的一个字符添加到前缀中,递归
for (unsigned int i=0;i<ext.length();i++)
{
PrintOrder(pre+ext.substr(i,1),string(ext).erase(i,1));
}
}
}
void TotalOrder(const string& orig)
{
PrintOrder(string(""),orig);
}
int main()
{
string a("1234");
TotalOrder(a);
}
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
void PrintOrder(const string& pre,const string& ext)
{
if (ext.length()==1)
{
//如果后缀只剩一个字符,输出当前顺序,递归结束
cout<<pre<<ext<<endl;
}
else
{
//如果后缀长度大于1,每次把后缀中的一个字符添加到前缀中,递归
for (unsigned int i=0;i<ext.length();i++)
{
PrintOrder(pre+ext.substr(i,1),string(ext).erase(i,1));
}
}
}
void TotalOrder(const string& orig)
{
PrintOrder(string(""),orig);
}
int main()
{
string a("1234");
TotalOrder(a);
}
相关文章推荐
- WARN No appenders could be found for logger的解决方法
- 值得推荐的C/C++框架和库
- GCD、dispatch函数介绍
- CUBRID学习笔记 8 复制数据库
- 百度地图LBS开放平台AK一直没有用
- [bzoj3729]Gty的游戏
- FTC334K 触摸开关
- ps技术
- 生产者消费者模式
- 禁止访问dede的模板目录templets,防止盗窃模板
- 全黑图像去除
- Sql server编写九九乘法表
- 使用jstack分析cpu消耗过高的问题
- java 编译.java文件
- Android 应用程序获得版本号
- AndroidStudio修改单行注释灰不拉基的颜色
- 全黑图像去除
- Hbase分布式安装部署过程
- Activit Modeler设计器汉化
- Java学习笔记--HashMap