ZOJ1004

来源:互联网 发布:网络热敏打印机 编辑:程序博客网 时间:2024/04/26 07:54

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1004

说实话,没看懂;抄答案,仍然不怎么懂……

#include<iostream>#include<stack>#include<cstring>#include<vector>using namespace std;vector<char> ans; //储存'i','o'序列int len;stack<char> Push;  //栈string Begin,Goal; //初始字符串,目标字符串void DFS(int iBegin, int iGoal) //初始字符串和目标字符串的指针{    if (iBegin == len && iGoal == len)    {        for (int i=0; i<ans.size(); i++)            cout<<ans[i]<<' ';        cout<<endl;    }    if (iBegin + 1 <= len)    {        Push.push(Begin[iBegin]);        ans.push_back('i');        DFS(iBegin+1, iGoal);        Push.pop();        ans.pop_back();    }    if (iGoal + 1 <= iBegin && iGoal + 1 <= len && Push.top() == Goal[iGoal])    {        char tmp = Push.top();        Push.pop();        ans.push_back('o');        DFS(iBegin,iGoal+1);        Push.push(tmp);        ans.pop_back();    }}int main(){    while (cin>>Begin>>Goal)    {        ans.clear();        len = Begin.length();        cout<<'['<<endl;        DFS(0,0);        cout<<']'<<endl;    }    return 0;}


0 0
原创粉丝点击