忘记题目是什么了

来源:互联网 发布:linux使用gcc调试 编辑:程序博客网 时间:2024/06/09 17:07

题意:输入两个字符串入栈表示‘i’出栈表示‘o’;
将第二个字符串通过一系列出栈入栈

#include<iostream>#include<stack>#include<cstring>#include<string>#include<vector>using namespace std;int len1 ;stack <char>c;vector<char>jilu;string  a,b;void dfs(int x ,int y){    if(x == len1 && y == len1)//第一点    {        for(int i=0;i<jilu.size();i++)        {            cout<<jilu[i]<<' ';        }        cout<<endl;    }    if(x+1<= len1)    {        c.push(a[x]);        jilu.push_back('i');        dfs(x+1,y);        c.pop();        jilu.pop_back();    }    if((y+1<=len1) && (y+1<=x )&&(c.top() == b[y]))    //第二点    {        char kk;        kk=c.top();        c.pop();        jilu.push_back('o');        dfs(x,y+1);        c.push(kk);        jilu.pop_back();    }}int main (){    while(cin>>a>>b)    {        len1=a.size();        cout<<"["<<endl;        dfs(0,0);        cout<<"]"<<endl;    }    return 0;}

第一点:进栈入栈需要同时相等,

引用块内容
eric
rice
i i o i o i o o

像这个就是这样
第二点:
y+1<=x
则栈不能空
y+1<=len1
要小于字符串长度
而且栈的最上面的字符要是b字符串的头

原创粉丝点击