题意:输入两个字符串入栈表示‘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字符串的头