#include <iostream>
#include <string>
using namespace std;
string stack,requare,start,newStr;
string table;
int num=0,i=0;
void check(string& start,string& stack);
void print(){
? if(newStr==requare)
? cout<<table<<endl;
}
void pushStack(char item,string& start,string& stack){
?table+='i';
?stack+=item;
?check(start,stack);
}
void popStack(string& start,string& stack){
?table+='o';
?newStr+=stack[stack.size()-1];
?stack.erase(stack.size()-1);
?check(start,stack);
}
void delPush(){
? table.erase(table.size()-1);
? stack.erase(stack.size()-1);
}
void delPop(){
? stack+=newStr[newStr.size()-1];
? table.erase(table.size()-1);
? newStr.erase(newStr.size()-1);
}
void check(string& start,string& stack){
?if (num==start.size()*2) {
??print();?
??return;
?}
?
??
??? if((newStr.size()+stack.size())!=start.size()){
??? num++;
??? pushStack(start[i++],start,stack);
??? delPush();
??? num--;
??? i--;
??? }
??? if(stack.empty()&&i<start.size()) return;
??? num++;
??? popStack(start,stack);
??? delPop();
??? num--;
?
?
}
int main(){
?cin>>start>>requare;
?check(start,stack);
?return 0;
}
?
很不規(guī)范的地柜,還有好多個清理狀態(tài)的函數(shù)。。。
什么時候才能改進阿!!!!!!!!