O和o的区别又把我坑
#include <stdio.h>
#include <iostream>
#include <string>
#include <stack>
#include <vector>
using namespace std;
int length;
string a, b;
vector<char>operate;
stack<char>build;
//freopen("in", "r", stdin);
//freopen("out", "w", stdout);
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 tc=build.top();
build.pop();
operate.push_back('o');
dfs(ipush, ipop+1);
build.push(tc);
operate.pop_back();
}
}
int
main()
{
while(cin>>a>>b){
operate.clear();
while(build.empty()!=1)
build.pop();
length=a.length();
cout<<"["<<endl;
dfs(0, 0);
cout<<"]"<<endl;
}
return 0;
}