Anagrams by Stack(STL)
Posted 未定_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Anagrams by Stack(STL)相关的知识,希望对你有一定的参考价值。
Anagrams by Stack
题意:i是进栈,o是出栈,给你两个字符串判断从串1到串2的进栈出栈情况。比如:
输入:
madam
adamm
输出:
[
i i i i o o o i o o
i i i i o o o o i o
i i o i o i o i o o
i i o i o i o o i o
]
回溯算法,DFS
#include<iostream>
#include<stack>
#include<vector>
using namespace std;
string a,b;//串1与串2
stack<char>s;
vector<char>v;//存放i与o
int length;
void dfs(int in,int out)
cout<<in<<" "<<out<<endl;
if(in==length&&out==length)
for(int i=0;i<v.size();i++)
cout<<v[i]<<" ";
cout<<endl;
if(in<length)
s.push(a[in]);
v.push_back('i');
dfs(in+1,out);//从这一步出来以后符合的结果输出,不符合的通过下面一步回溯
s.pop();//回溯
v.pop_back();//回溯
if(out<in&&out<length&&s.top()==b[out])
char t=s.top();
s.pop();
v.push_back('o');
dfs(in,out+1);//out+1改变串2的头,也就是前一个字母已经输出了,继续判断下一位
s.push(t);//回溯
v.pop_back();//回溯
int main()
while(cin>>a>>b)
length=a.length();
cout<<"["<<endl;
dfs(0,0);
cout<<"]"<<endl;
return 0;
以上是关于Anagrams by Stack(STL)的主要内容,如果未能解决你的问题,请参考以下文章