zoukankan      html  css  js  c++  java
  • ZOJ1004 Anagrams by Stack

    题目大意:规定 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 ("
    ");
            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 ("[
    ");
            dfs(0,0);
            printf ("]
    ");
        }
        return 0;
    }
  • 相关阅读:
    [转载]Centos7.x下环境搭建(一)--yum方式安装mysql5.7
    树上分治
    [SPOJ2666]QTREE4
    [SPOJ375]QTREE
    [SPOJ1825]FTOUR2
    [POJ1741]Tree
    [LG-P5350]序列
    [COCI 2014/2015 #3]KAMIONI
    [SHOI2014]神奇化合物
    [GXOI/GZOI2019]旧词
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12310919.html
Copyright © 2011-2022 走看看