Anagrams by Stack

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4

题目大意:输入两个字符串序列,判断能否通过对第一个字符串进行进栈出栈操作得到第二个字符串,若能则输出所有能达到的进出栈操作过程。我通过全排列每得到一组操作过程,则用函数按照这个操作过程,判断能否得到第二个字符串,若能则表明此操作过程可行,输出。

代码如下:

 1 # include<iostream>
 2 # include<stack>
 3 # include<vector>
 4 # include<algorithm>
 5 using namespace std;
 6
 7 string str1,str2;
 8 stack<char> p;
 9 vector<char> ans;
10 int len;
11
12 void print(){
13     for(int i =0; i<ans.size(); i++)
14         cout<<ans[i]<<" ";  //注意空格
15     cout<<endl;
16 }
17
18 void dfs(int x,int y){
19     if(x==len && y==len)
20         print();
21     if(x+1<=len){
22         p.push(str1[x]);
23         ans.push_back('i');
24         dfs( x+1 , y);
25         p.pop();
26         ans.pop_back();
27     }
28     if(y+1<=x && y+1<=len &&p.top() == str2[y]){
29         char temp = p.top();
30         p.pop();
31         ans.push_back('o');
32         dfs(x,y+1);
33         p.push(temp);
34         ans.pop_back();
35     }
36 }
37
38 int main(){
39     while(cin >> str1 >> str2){
40         len =str1.length();
41         string t1 = str1, t2 = str2;
42         sort(t1.begin(),t1.end());
43         sort(t2.begin(),t2.end());
44         cout<<"["<<endl;
45         if(t1 == t2){
46             dfs(0,0);
47         }
48         cout<<"]"<<endl;
49     }
50     return 0;
51 }

转载于:https://www.cnblogs.com/acm-bingzi/p/3258815.html

ZOJ 1004 Anagrams by Stack(DFS+数据结构)相关推荐

  1. C语言单链表实现栈(stack)数据结构

    栈 1.栈是限定仅在表尾进行插入和删除操作的线性表.把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom). 2.栈是先进后出(LIFO)结构. 3.栈的插入叫进栈/压栈Push,删 ...

  2. 【ZOJ - 3210】A Stack or A Queue? (模拟)

    题干: Do you know stack and queue? They're both important data structures. A stack is a "first in ...

  3. (造轮子)C 创建队列和图实现广度优先算法(BFS)和深度优先算法(DFS)(数据结构)

    链表.队列和图实现BFS和DFS算法(C+造轮子+详细代码注释) 1.队列的链式存储结构   队列的链式表示称为链队列,它实际上是一个同时带有队头指针和队尾指针的单链表.头指针指向队头节点,尾指针指向 ...

  4. zoj 3620 Escape Time II dfs

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4744 题意: 给你个无向边带权图,让你在时间内从s走到e,拿的珠宝 ...

  5. zoj 1002 Fire Net(DFS~ 哈哈哈哈,终于过了!!!)

    1002 从一开始做ACM就郁闷的一道题,在1001下面它应该觉得压力很大啊!!哈哈.. 做完八皇后,党说这个能做了... 嘿嘿.这题是找放置最多数目的blockhouses(碉堡..)使之不能同行同 ...

  6. ZOJ 1711 Sum It Up(DFS)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=711 Given a specified total t and a ...

  7. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

  8. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)

    水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法:        (1)枚举 (1753,2965)       (2)贪心(13 ...

  9. ZOJ 题目分类,学校的一个巨巨做的。

     DP: 1011      NTA                    简单题 1013      Great Equipment        简单题 1024      Calendar ...

最新文章

  1. CentOS 6 使用 OpenLDAP 认证
  2. netstat -ano
  3. 福利 | 闷骚的程序员是如何讲冷笑话的?
  4. promise原理—一步一步实现一个promise
  5. html加载本地pdf,WkHTMLtoPDF不加载本地CSS和图像
  6. grasshopper python_【转】精华教学 | GH_Cpython——将原生的 Python 与机器学习框架引入Grasshopper...
  7. Xprinter XP-N160L 打印机驱动
  8. 云痕大数据 家长登录_云痕大数据查成绩app
  9. 解决Excel桌面新建.xls或.xlsx文件,提示“文件格式或文件扩展名无效,请确定文件未损坏,并且文件扩展名与文件的格式匹配“的问题
  10. SEO-老域名的选择
  11. PhotoShop,CSS 文字间距 与像素之间的换算
  12. Shell脚本常见问题
  13. 鸿蒙修复了蓝牙麦克风问题吗,手机变传声器、麦克风?华为P40的隐藏功能你知道吗?...
  14. java爬虫实例_关于java爬虫以及一些实例
  15. Scratch安装使用教程
  16. 英雄帖:乌镇巴比特加速器潜力项目DemoDay,虚位以待
  17. Spring Cloud入门 -- Ribbon服务消费者(Hoxton.SR5版)
  18. 数据库实验六 触发器实验
  19. 斯坦福兔子的伪全息舞台剧
  20. 太平洋直购传销被查处

热门文章

  1. PyQt安装和环境配置
  2. gdb 调试 TuMediaService
  3. safari的一些问题
  4. vue+elementUI开发实践问题总结
  5. Memcached常用操作
  6. 我在全球最大的同性社交平台那点事
  7. HDU2193-AVL-数据结构-AVL
  8. javascript函数,值得参考!
  9. xbmc addons
  10. 建立管理SQL Server登录帐户