回溯法输出字符串入栈出栈的全部可能序列
来源:互联网 发布:图像分类算法matlab 编辑:程序博客网 时间:2024/06/14 09:13
输入:
abc
输出:
abc
acb
bac
bca
cba
#include <stack>#include <iostream>#include <algorithm>#include <vector>#include <string>#include <deque>using namespace std;vector<deque<char> > res;void printOut(deque<char> q) {while(q.size() > 0) {cout << q.front();q.pop_front();}cout << endl;return;}/* qValues 存放入栈序列 sTemp 用于模拟入栈过程*/void findAllSequences(deque<char> qValues,stack<char> sTemp,deque<char> qOutput, int size){ if((qValues.size() == 0)&&(sTemp.size() == 0)&&(qOutput.size() == size)) {res.push_back(qOutput); return; } if(qValues.size()!=0){ char c = qValues.front(); sTemp.push(c); qValues.pop_front(); findAllSequences(qValues,sTemp,qOutput, size); sTemp.pop(); qValues.push_front(c); } if(sTemp.size()!=0) { char c = sTemp.top(); sTemp.pop(); qOutput.push_back(c); findAllSequences(qValues,sTemp,qOutput, size); qOutput.pop_back(); sTemp.push(c); } return;}int main(){std::string str;cin >> str;deque<char> qValues;deque<char> qOutput;stack<char> sTemp;for(int i = 0; i < str.size(); i++) {qValues.push_back(str[i]);}findAllSequences(qValues, sTemp, qOutput, str.size());for(int j = res.size() - 1; j >= 0 ; j--) {printOut(res[j]);}return 0;}
阅读全文
0 0
- 回溯法输出字符串入栈出栈的全部可能序列
- <实例>输出给定字符串的全部连续子序列
- 组合问题:输出从m个数中的任意抽取n个数的组合全部可能序列
- 输出字符串的全部组合方式
- 字符串的所有可能组合输出
- 回溯法求解数独的全部解
- [算法] 输出 字符串的全部子组合 [dfs - 递归神技]
- 给定一个字符串输出其全部排列的方法
- 算法:输出给定字符串的全部连续子串
- 阿里电面题:输出给定字符串的全部连续子串
- 回溯法:如何看遍人生的种种可能?
- 输出字符串的最长回文序列
- 输出全部的希腊字母
- 给定一个字符串,输出其所有的可能排列
- 给定入栈序列1到n,输出所有可能的出栈序列
- 字符串的模式匹配(回溯法)
- 回溯法:字符串转换
- 生成所有的出栈序列 (回溯法)
- mac环境下搭建hexo+github pages+next个人博客
- 洛谷 P1186 玛丽卡
- 使用Wamp在win7上搭WEB服务器
- 笔记-git与github的交互初识
- 六级_第二天
- 回溯法输出字符串入栈出栈的全部可能序列
- 【opencv学习笔记.1】操作像素画圆
- 委托、泛型委托等
- Uva1395 Slim Span(最小生成树)
- 栈—— 表达式转换
- java并发基础(三)--- 任务执行(Executor的使用)
- 猜数字游戏
- oracle主键和索引
- HNOI-2004 打鼴鼠