标签:using ram void 现在 nbsp code space 出栈 col
题目大意:规定 i 为入栈,o 为出栈,现在给两个字符串st1,st2,现在要将st1转化为st2,转化方法是,st1中字符从头开始入栈,并合理出栈构造出st2。请输出所有可能的出入栈步骤。
深度优先搜索+回溯~
#include<bits/stdc++.h> using namespace std; string s1,s2; int len; stack<char> st; vector<char> path; void dfs (int ipush,int ipop) { if (ipush==len&&ipop==len) { for (int i=0;i<path.size();i++) printf ("%c ",path[i]); printf ("\n"); return; } if (ipush+1<=len) { st.push(s1[ipush]); path.push_back(‘i‘); dfs(ipush+1,ipop); st.pop(); path.pop_back(); } if (ipop+1<=len&&!st.empty()&&st.top()==s2[ipop]) { char now=st.top(); st.pop(); path.push_back(‘o‘); dfs(ipush,ipop+1); st.push(now); path.pop_back(); } } int main () { while (cin>>s1>>s2) { len=s1.length(); printf ("[\n"); dfs(0,0); printf ("]\n"); } return 0; }
标签:using ram void 现在 nbsp code space 出栈 col
原文地址:https://www.cnblogs.com/zhanglichen/p/12310919.html