hdu 1515 Anagrams by Stack
题解:
第一:两个字符不相等(即栈顶字符与目标字符不相等);这种情况很容易处理,将匹配word的下一个字符入栈,指针向后挪已为继续递归。
第二:两个字符相等(即栈顶字符与目标字符相等);这种情况有两种选择
(1)字符出栈,并将目标word的指针向后挪一位,继续递归;
(2)将匹配word的下一个字符入栈,指针向后挪一位,继续递归;
每一次递归用path记录下来路径。当目标word的指针超过最后一位了,说明成功,此时将path输出。
#include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
char str1[],str2[];
int len1,len2;
char path[];
void test(int x,int y,stack<char> st,int t)
{
int j; if(y==len2)
{
printf("i ");
for(j=; j<t; j++)
printf("%c ",path[j]);
printf("\n");
return ;
}
if(st.empty ())
{
st.push(str1[x+]);
path[t]='i';
test(x+,y,st,t+);
st.pop();
return ;
}
char cur=st.top ();
if(x==len1 && cur!=str2[y])
return ; st.push(str1[x+]);
path[t]='i';
test(x+,y,st,t+);
st.pop(); if(cur==str2[y])
{
st.pop();
path[t]='o';
test(x,y+,st,t+);
st.push(str1[x]);
}
return ;
}
int main()
{
int i,j;
while(scanf("%s%s",str1,str2)!=EOF)
{
len1=strlen(str1);
len2=strlen(str2);
printf("[\n");
if(len1<len2)
{
printf("]\n");
continue;
}
stack<char> st;
st.push(str1[]);
test(,,st,);
printf("]\n");
}
return ;
}
hdu 1515 Anagrams by Stack的更多相关文章
- HDU ACM 1515 Anagrams by Stack
Anagrams by Stack Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- stack+DFS ZOJ 1004 Anagrams by Stack
题目传送门 /* stack 容器的应用: 要求字典序升序输出,所以先搜索入栈的 然后逐个判断是否满足答案,若不满足,回溯继续搜索,输出所有符合的结果 */ #include <cstdio&g ...
- ZOJ 1004 Anagrams by Stack(DFS+数据结构)
Anagrams by Stack 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4 题目大意:输入两个字符串序列,判 ...
- 【Acm】算法之美—Anagrams by Stack
题目概述:Anagrams by Stack How can anagrams result from sequences of stack operations? There are two seq ...
- Anagrams by Stack(深度优先搜索)
ZOJ Problem Set - 1004 Anagrams by Stack Time Limit: 2 Seconds Memory Limit: 65536 KB How can a ...
- [ZJU 1004] Anagrams by Stack
ZOJ Problem Set - 1004 Anagrams by Stack Time Limit: 2 Seconds Memory Limit: 65536 KB How can a ...
- ZOJ 1004 Anagrams by Stack
Anagrams by Stack 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1004 题意:通过堆栈实现将一 ...
- ZOJ Anagrams by Stack(堆栈中的搜索)
个人心得:算法书中的第一个例题就来了一个下马威,虽然题意很好理解但是做起来确实这么不顺手,所以自己对于搜索和堆栈理解的并不是很好, 以前也是很多这样的题目无法实施,这题要做的很明确就是输出正确的能依靠 ...
- hdu 1515 dfs
一道不错的搜索题 题意:告诉你两个字符串a和b,要求对a进行栈的操作而产生b串,输出操作的顺序,如果有多组输出就按字典序输出. Sample Input madam adamm bahama baha ...
随机推荐
- dubbox使用
1.命令行下 git clone https://github.com/dangdangdotcom/dubbox 2.mvn install -Dmaven.test.skip=true 跳过测试编 ...
- 011--VS2013 C++ 斜角地图贴图
准备好的图片 //全局变量HDC mdc;HBITMAP fullmap;//声明位图对象,在初始化函数中完成的斜角地图会保存在这个位图中const int rows = 10, cols = 10; ...
- xml数据读 swift
// // ViewController.swift // xml读写 // // Created by mac on 15/7/14. // Copyright (c) 2015年 fangyuha ...
- JAVA素数分解
package test; import java.util.*; public class test1 { public static void main(String[] args){ long ...
- unity2d之2d帧动画创建
在2d游戏中帧动画的应用是非常广泛的,那么如何在unity中创建一个帧动画,主要是下面几个步骤. 原文地址 :http://blog.csdn.net/dingkun520wy/article/de ...
- Windows8 各种版本区别对比详解
微软的 Windows8 操作系统提供了4个不同的版本,分别是 Windows RT.Windows 8 标准版.Windows 8 Pro 专业版 以及 Windows 8 Enterprise 企 ...
- 老周的ABP框架系列教程 -》 一、框架理论初步学习
老周的ABP框架系列教程 -- 一.框架理论初步学习 1. ABP框架的来源与作用简介 1.1 简介 1.1.1 ABP框架全称为"ASP.NET Boilerplate ...
- Python中数据的保存和读取
在科学计算的过程中,往往需要保存一些数据,也经常需要把保存的这些数据加载到程序中,在 Matlab 中我们可以用 save 和 lood 函数很方便的实现.类似的在 Python 中,我们可以用 nu ...
- jsp或Action获取请求参数中文乱码
普通情况下,中文字符会被自动转换成iso-8859-1的编码格式通过网络传输,而这种格式是没办法直接表示出我们认识的中文字符的,所以还要手动将他转换回之前的字符集. 一般在servlet或者actio ...
- Multi-catch
It’s relatively common for a try block to be followed by several catch blocks to handle various type ...