1143.字母转换
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
通过栈交换字母顺序。给定两个字符串,要求所有的进栈和出栈序列(i表示进栈,o表示出栈),使得字符串2在求得的进出栈序列的操作下,变成字符串1。输出结果需满足字典序。
例如TROT 到 TORT:
[
i i i i o o o o
i o i i o o i o
]
输入
给定两个字符串,第一个字符串是源字符串,第二个字符是目标目标字符串。
输出
所有的进栈和出栈序列,输出结果需满足字典序。
【2018/11/16第二版代码】
#include <iostream>
#include <stack>
#include <string>
using namespace std;
stack <char> s1;
string a,b;
int l;
int in,out; //进栈。出栈次数
int num; //目前栈内元素个数
char ans[10001]; //存放答案
void dfs(int m);
int main()
{
while(cin>>a>>b) //多组测例
{
//cout<<a<<b;
int la=a.length();
int lb=b.length();
cout<<'['<<endl;
if(la==lb) //若两字符串长度相同才深搜
{
in=out=num=0;
l=la;
dfs(0);
}