ZOJ 1004 Anagrams by Stack
Anagrams by Stack
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1004
题意:通过堆栈实现将一个字符串转变成目标字符串的操作,要求输出全部的可能操作组合。
思路:利用深度优先的搜索思路,对于每一个状态都有入栈和出栈两种可能的操作,由于要求按字典序输出,每次先考虑入栈再考虑出栈。即“能入就入,不能入考虑是否能退,随后返回上一步”。
下面贴代码:
1 //Problem Name: Anagrams by Stack
2 //Source: ZOJ 1004
3 //Author: jinjin18
4 //Main idea: DFS
5 //Language: C++
6 //=========================================================
7 #include<stdio.h>
8 #include<string.h>
9
10 char origin[1000];
11 char target[1000];
12 char temp[1000];
13 int top = -1;
14 char opt[2005];
15 int iopt;
16 int popn,pushn;
17 int len;
18 void DFS(){
19 if(popn == len){
20 for(int i = 0; i < 2*len; i++){
21 printf("%c ",opt[i]);
22 }
23 printf("\n");
24 return ;
25 }
26
27 if(pushn < len){
28 top++;
29 temp[top] = origin[pushn];
30 pushn++;
31 opt[iopt] = 'i';
32 iopt++;
33 DFS();
34 iopt--;
35 top--;
36 pushn--;
37 }
38
39 if(popn < pushn&& temp[top] == target[popn]){
40 top--;
41 popn++;
42 opt[iopt] = 'o';
43 iopt++;
44 DFS();
45 iopt--;
46 top++;
47 popn--;
48 temp[top] = target[popn]; //恢复现场
49 }
50 return ;
51 }
52
53 int main(){
54
55
56 while(scanf("%s%s",origin,target)!=EOF){
57 popn = pushn = 0;
58 iopt = 0;
59 len = strlen(origin);
60 printf("[\n");
61 DFS();
62 printf("]\n");
63 }
64
65 return 0;
66 }
ZOJ 1004 Anagrams by Stack的更多相关文章
- 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 题目大意:输入两个字符串序列,判 ...
- [ZOJ 1004] Anagrams by Stack (简单搜索)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1004 题目大意:给你个栈,给你源串和目标串,按字典序输出符合要求 ...
- [ZJU 1004] Anagrams by Stack
ZOJ Problem Set - 1004 Anagrams by Stack Time Limit: 2 Seconds Memory Limit: 65536 KB How can a ...
- 1004 Anagrams by Stack
考察DFS的应用,用栈描述字符串的变化过程. #include <stdio.h> #include <string.h> int len1,len2; ],str2[],st ...
- Anagrams by Stack(深度优先搜索)
ZOJ Problem Set - 1004 Anagrams by Stack Time Limit: 2 Seconds Memory Limit: 65536 KB How can a ...
- HDU ACM 1515 Anagrams by Stack
Anagrams by Stack Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 【Acm】算法之美—Anagrams by Stack
题目概述:Anagrams by Stack How can anagrams result from sequences of stack operations? There are two seq ...
- 深搜———ZOJ 1004:anagrams by stack
细节问题各种虐!! 其实就是简单的一个深搜 看成二叉树来理解:每个节点有两个枝:入栈和出栈. 剪枝操作:只有当栈顶元素和当前位置的目标字符相同时才出栈,否则就不出栈 dfs写三个参数:depth搜索深 ...
随机推荐
- P1000 超级玛丽游戏
P1000 超级玛丽游戏 https://www.luogu.com.cn/problem/P1000 这就很简单了代码: #include <iostream> #include < ...
- 如何使用 dotTrace 来诊断 netcore 应用的性能问题
最近在为 Newbe.Claptrap 做性能升级,因此将过程中使用到的 dotTrace 软件的基础用法介绍给各位开发者. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架. ...
- SpringCould中的Hystrix
一.简介 源码地址:https://gitee.com/xiaocheng0902/my-cloud.git 1,定义 Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多 ...
- python框架day01
一.注意事项 # 如何让你的计算机能够正常的启动django项目 1.计算机的名称不能有中文 2.一个pycharm窗口只开一个项目 3.项目里面所有的文件也尽量不要出现中文 4.python解释器尽 ...
- 题解:SDOI2017 新生舞会
题解:SDOI2017 新生舞会 Description 学校组织了一次新生舞会,Cathy 作为经验丰富的老学姐,负责为同学们安排舞伴. 有 \(n\) 个男生和 \(n\) 个女生参加舞会.一个男 ...
- 基于python实现顺序存储的队列代码
""" 队列-顺序存储 seqqueue.py 代码实现 """ # 自定义异常类 class QueueError(Exception): ...
- Linux下快速搭建测试网站DVWA
DVWA(Damn Vulnerable Web App)是一个基于PHP/MySql搭建的Web应用程序,旨在为安全专业人员测试自己的专业技能和工具提供合法的 环境,帮助Web开发者更好的理解Web ...
- spring boot:用swagger3生成接口文档,支持全局通用参数(swagger 3.0.0 / spring boot 2.3.2)
一,什么是swagger? 1, Swagger 是一个规范和完整的文档框架, 用于生成.描述.调用和可视化 RESTful 风格的 Web 服务文档 官方网站: https://swagger.i ...
- C++常用数据类型
基本的内置类型 C++ 为程序员提供了种类丰富的内置数据类型和用户自定义的数据类型.下表列出了七种基本的 C++ 数据类型: 类型 关键字 布尔型 bool 字符型 char 整型 int 浮点型 f ...
- Java进阶--Java动态代理
JDK version: 1.8 动态代理中所说的"动态", 是针对使用Java代码实际编写了代理类的"静态"代理而言的, 它的优势不在于省去了编写代理类那一点 ...