您的位置:首页 > 其它

ZOJ_1004 Anagrams by Stack

2015-10-21 18:45 351 查看
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4

代码:

#include<cstdio>

#include<algorithm>

#include<queue>

#include<cmath>

#include<map>

#include<cstring>

#include<string>

#include<utility>

#include<stack>

#include<vector>

#include<iostream>

using namespace std;

typedef long long ll;

string a,b;

stack<char> build;

vector<char> operate;

int length;

void dfs(int iPush,int iPop)

{

    if(iPush==length && iPop==length)

    {

        for(int i=0;i<operate.size();i++)

        {

            cout<<operate[i]<<' ';                      //结尾会有多余的一个空格

        }

        cout<<endl;

    }

    if(iPush+1 <= length)

    {

        build.push(a[iPush]);

        operate.push_back('i');

        dfs(iPush+1,iPop);

        build.pop();

        operate.pop_back();

    }

    if(iPop+1 <= iPush && iPop+1 <= length && build.top() == b[iPop])

    {

        char tmp=build.top();

        build.pop();

        operate.push_back('o');

        dfs(iPush,iPop+1);

        build.push(tmp);

        operate.pop_back();

    }

}

int main()

{

    while(cin>>a>>b)

    {

        length=a.length();

        cout<<"["<<endl;

        dfs(0,0);

        cout<<"]"<<endl;

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: