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;
    }
  • 相关阅读:
    js取当前时间的秒级时间戳
    微信自动聊天脚本
    小程序 缓存过期问题
    去掉表格默认样式
    css3 画心
    数据导入(二):MapReduce
    数据导入(一):Hive On HBase
    HBase参数优化
    Hadoop运维手记
    HBase优化相关
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12310919.html
Copyright © 2011-2022 走看看