目录

题目描述

思路分析

AC代码


题目描述

在幼儿园中,老师安排小朋友做一个排队的游戏。首先老师精心的把数目相同的小男孩和小女孩编排在一个队列中,每个小孩按其在队列中的位置发给一个编号(编号从0开始)。然后老师告诉小朋友们,站在前边的小男孩可以和他后边相邻的小女孩手拉手离开队列,剩余的小朋友重新站拢,再按前后相邻的小男孩小女孩手拉手离开队列游戏,如此往复。由于教师精心的安排,恰好可以保证每两个小朋友都能手拉手离开队列,并且最后离开的两个小朋友是编号最小的和最大的两个小朋友。(注:只有小男孩在前,小女孩在后,且他们两之间没有其他的小朋友,他们才能手拉手离开队列)。请根据老师的排队,按小女孩编号从小到大的顺序,给出所有手拉手离开队列的小男孩和小女孩的编号对。

输入

用一个字符串代表小朋友队列。字符串中只会出现两个字符,分别代表小男孩和小女孩,首先出现的字符代表小男孩,另一个字符代表小女孩。小孩总数不超过100。

输出

按小女孩编号顺序,顺序输出手拉手离开队列的小男孩和小女孩的编号对,每行一对编号,编号之间用一个空格分隔。

输入样例1

((()(())())(()))

输出样例1

2 3
5 6
4 7
8 9
1 10
12 13
11 14
0 15

思路分析

根据先入后出栈里面放小男孩,先入先出队列里面放小女孩。我一开始定义了两个类,BOY和GIRL,后来发现其实是一样的,所以改成了应该类,名字忘记改了,还叫BOY,但其实不一定是小男孩。类中一个字符表示它是男孩还是女孩,一个数n表示它的编号。

哦对,注意不一定(是男生,)是女生。可以用别的字符表示男生女生,所以只需要与s[0]比较就知道ta是男生还是女生了。

AC代码

#include <iostream>
#include <iomanip>
#include <queue>
#include <stack>
using namespace std;
class boy {public:char c;int n;boy () {};boy (char ch, int nn) {c = ch;n = nn;};
};
int main() {stack<boy> BOY;string s;cin >> s;int l = s.length();for (int i = 0; i < l; i++) {if (s[i] == s[0]) {boy a(s[0], i);BOY.push(a);} else {cout<<BOY.top().n<<" "<<i<<endl;BOY.pop();}}return 0;
}

DS栈+队列—排队游戏相关推荐

  1. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  2. 递归习题—排队游戏(C程序设计进阶 第3周)

    编程题#3:排队游戏 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在幼儿 ...

  3. [土狗之路]coursera C语言进阶练习题 排队游戏

    直接上题: 编程题#3:排队游戏 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB ...

  4. c语言用两个栈构造队列伪码,数据结构习题线性表栈队列.doc

    数据结构习题线性表栈队列 线性表(58) 1. 在单链表.双链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少? 2.设线性表的 ...

  5. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

  6. java 栈 队列 接口_Java队列接口

    java 栈 队列 接口 介绍: 队列是FIFO(先进先出)抽象数据类型(ADT). 换句话说,按插入顺序将元素删除. java.util.Queue是Java 中的接口,并且从java.util.C ...

  7. java中定义一个栈容器_Java 容器之 Connection栈队列及一些常用

    集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实 ...

  8. Java 容器之 Connection栈队列及一些常用

    集合家族图 ---|Collection: 单列集合---|List: 有存储顺序 , 可重复---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实现 ...

  9. 随机模拟在多排服务器上的应用,在Excel中应用随机函数模拟多服务台单队列排队系统...

    在Excel中应用随机函数模拟多服务台单队列排队系统 [摘 要] 计算机模拟是研究排队论问题的一个重要手段,可以选择的软件有很多,本文提出了一种基于Excel的简便方法.选用Excel中的随机函数,配 ...

最新文章

  1. 使用log4j日志-配置载入问题
  2. 解决苹果手机返回不刷新问题
  3. oracle 分组随机抽取,Oracle随机抽取记录的方法是什么呢?
  4. 一名优秀的数据分析师应该具备这10项关键技能
  5. 图像彩色化方法(基于颜色传递、颜色扩展)
  6. pandas笔记(7)DataFrame数学运算
  7. 大事 | 生活终于对我的联想Y430P下手了!
  8. Android开发 Retrofit使用
  9. Android错误日志分析
  10. EF实体类种的Virtual关键字作用
  11. 【Image2Lcd X TFT_LCD】—— 图片取模软件使用
  12. 这个立冬,我线下面基了一位TMD高级专家,太牛逼了!
  13. Diva无法运行LVS问题(virtuoso,layout)
  14. 清洗枪市场现状研究分析与发展前景预测报告
  15. C++ 哈希表模拟实现(补充)
  16. 根据流量 (Traffic) 来进行负载平衡器 (Auto Scaling Group) 的运作
  17. Allwinner A33/A31 FrameWare基本配置
  18. 奥斯卡金像奖导演洛朗•维茨 (Laurent Witz)出席第十一届中国国际动漫节
  19. 安装配置管理 之 Realplay 10.0 的安装和使用
  20. 考研复试(控制工程专硕)及大学本科(物联网工程)知识点回顾(四)——数字电子技术

热门文章

  1. Yahu谈游戏哲学:什么是游戏性
  2. 关于城管委的回应书写
  3. Fusion360学习记录:STL和OBJ文件的转换和导入
  4. 3 photolemur 样式下载_launcher 20最新版下载_Launcher 20app下载 v3.4.3.3 - 87G手游网
  5. java mx150显卡够了吗_MX150性能究竟怎么样,与GTX1050相比差别有多大,白话评测性能...
  6. 已知A,B点,和C点,让C点在AB线段上移动
  7. 组合数据类型、可变序列与不可变序列、数据组织维度
  8. 实践▍Python爬虫基础:验证码的爬取和识别详解
  9. 走出微服务误区:避免从单体到分布式单体
  10. java骂人_著名的Java并发编程大师都这么说了,你还不知道伪共享么!