#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> res;
void dfs(string s, int i, string t, int j, string stack, string op){
if(t.size() == j){
res.push_back(op);
return;
}
if(i< s.size()){
dfs(s, i+1, t, j, stack+s[i], op+"i ");
}
if(stack.size() > 0 && stack[stack.size() - 1] == t[j]){
dfs(s, i, t, j+1, stack.substr(0, stack.size() - 1), op+"o ");
}
}
int main(){
string s, t;
while(cin >> s >> t){
res.clear();
cout << "[" << endl;
dfs(s, 0, t, 0, "", "");
sort(res.begin(), res.end());
for(vector<string>::iterator it = res.begin(); it != res.end(); it++){
cout << *it << endl;
}
cout << "]" << endl;
}
return 0;
}
ZOJ-1004-Anagrams by Stack
最新推荐文章于 2025-01-17 13:03:51 发布