码迷,mamicode.com
首页 > 其他好文 > 详细

ZOJ1004 Anagrams by Stack

时间:2020-02-15 11:47:10      阅读:53      评论:0      收藏:0      [点我收藏+]

标签: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;
}

 

ZOJ1004 Anagrams by Stack

标签:using   ram   void   现在   nbsp   code   space   出栈   col   

原文地址:https://www.cnblogs.com/zhanglichen/p/12310919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!