首页 > 其他分享 >ZOJ 1004 Anagrams by Stack(dfs堆栈)

ZOJ 1004 Anagrams by Stack(dfs堆栈)

时间:2023-02-24 10:32:30浏览次数:41  
标签:word Anagrams ZOJ each dfs pop sequences input stack


Anagrams by Stack


Time Limit: 2 Seconds      Memory Limit: 65536 KB


How can anagrams result from sequences of stack operations? There are two sequences of stack operators which can convert TROT to TORT:


[ i i i i o o o o i o i i o o i o ]


where i stands for Push and o stands for Pop. Your program should, given pairs of words produce sequences of stack operations which convert the first word to the second.

Input

The input will consist of several lines of input. The first line of each pair of input lines is to be considered as a source word (which does not include the end-of-line character). The second line (again, not including the end-of-line character) of each pair is a target word. The end of input is marked by end of file.

Output

For each input pair, your program should produce a sorted list of valid sequences of i and o which produce the target word from the source word. Each list should be delimited by


[ ]

and the sequences should be printed in "dictionary order". Within each sequence, each

i and

o is followed by a single space and each sequence is terminated by a new line.

Process

A stack is a data storage and retrieval structure permitting two operations:


Push - to insert an item and

Pop - to retrieve the most recently pushed item


We will use the symbol i (in) for push and o (out) for pop operations for an initially empty stack of characters. Given an input word, some sequences of push and pop operations are valid in that every character of the word is both pushed and popped, and furthermore, no attempt is ever made to pop the empty stack. For example, if the word FOO is input, then the sequence:


i i o i o o

is valid, but

i i o

is not (it's too short), neither is

i i o o o i

(there's an illegal pop of an empty stack)

Valid sequences yield rearrangements of the letters in an input word. For example, the input word FOO and the sequence i i o i o o produce the anagram OOF. So also would the sequence i i i o o o. You are to write a program to input pairs of words and output all the valid sequences of i and o

Sample Input


madam adamm bahama bahama long short eric rice



Sample Output


[
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
]
[
i o i i i o o i i o o o
i o i i i o o o i o i o
i o i o i o i i i o o o
i o i o i o i o i o i o
]
[
]
[
i i o i o i o o
]


思路:使用堆栈,递归。

代码一看就懂

 

/**数据结构练习*/
#include<iostream>
#include<stack>
#include<vector>
using namespace std;
string a,b;
stack<char>build;
vector<char>save;//容器,相当于动态数组
int len;
void dfs(int in,int out)///出入站的个数
{
if(in==len&&out==len)
{
for(int i=0;i<save.size();i++)
cout<<save[i]<<" ";cout<<"\n";
}
if(in<len)
{
build.push(a[in]);
save.push_back('i');
dfs(in+1,out);
build.pop();
save.pop_back();
}
if(out<in&&out<len&&build.top()==b[out])
{
char _s=build.top();build.pop();
save.push_back('o');dfs(in,out+1);
build.push(_s);save.pop_back();
}
}
int main()
{
while(cin>>a>>b)
{
len=a.length();
cout<<"["<<"\n";
dfs(0,0);
cout<<"]"<<"\n";
}
}

 

 

标签:word,Anagrams,ZOJ,each,dfs,pop,sequences,input,stack
From: https://blog.51cto.com/u_15953788/6082912

相关文章

  • DFS和BFS理解+模板+例题
    DFS和BFS理解+模板+例题DFS(深度优先搜索)本质上是暴力把所有的路径都搜索出来,它运用了回溯,保存这次的位置并深入搜索,都搜索完便回溯回来,搜下一个位置,直到把所有最深位置都......
  • ABC 289 C - Coverage(dfs)
    半个多月没写题,连暴力dfs都忘记了,完蛋,烂菜地里了https://atcoder.jp/contests/abc289/tasks/abc289_c题目大意:给定一个N,M个集合,然后分别给出M个集合里面的数字个数......
  • Hadoop 系列之 HDFS
    简述本文主要基于Hadoop2.x以上版本,用于记录Hadoop组件HDFS的相关知识点。正文作为Hadoop三大组件之一,HDFS主要用于数据存储,而Hadoop又隶属于分布式架构,这就涉及到多服......
  • DFS和BFS理解+模板+例题
    DFS和BFS理解+模板+例题DFS(深度优先搜索)本质上是暴力把所有的路径都搜索出来,它运用了回溯,保存这次的位置并深入搜索,都搜索完便回溯回来,搜下一个位置,直到把所有最深位置都......
  • hadoop-hdfs安全模式关闭
    在安全模式下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者......
  • hadoop - hadoop2.6 伪分布式 - Java API 操作 HDFS
    1.环境  hadoop2.6   hdfs地址: hdfs://localhost:9000 开发环境:eclipse  新建Map/Reduce工程2.代码示例packagecn.labelnet.demo;importjava.io.FileIn......
  • HDFS数据目录挂载在根目录下至磁盘爆满问题解决
    1、查看hdfs-size.xml文件获取数据目录位置vim/opt/hadoop/etc/hadoop/hdfs-site.xml<property><name>dfs.datanode.data.dir</name><value>/home/hadoop-dat......
  • HDFS写操作(简单源码解读)
    HDFS最重要的就是写流程了,学校老师教的时候也是重点介绍这个过程(虽然我并没有在任何面试中被问到过)。下面从画图和文字两个过程介绍写流程,这次读了源代码之后对整个过程更......
  • BZOJ 4145 [AMPPZ2014]The Prices (状压DP)
    题意你要购买商店,你到第i家商店的路费为,在第家商店购买第种物品的费用为,求最小总费用。分析很容易定义出状态,表示到第行,买的物品情况为的最小费用。按照往常的套路是转移时......
  • [bzoj 4176] Lucas的数论 (杜教筛 + 莫比乌斯反演)
    题面设为的约数个数,给定,求题目分析有这样一个结论这道题就是下面这道题的数据增强版,那么这个结论的证明就不再赘述,请自行查看下面的(蒟蒻)博客​​传送门:[SDOI2015][bz......