直接上题:

编程题#3:排队游戏

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

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

输入

用一个字符串代表小朋友队列。字符串中只会出现两个字符(样例输入里用的是 括号但实际数据则不一定),分别代表小男孩和小女孩,首先出现的字符代表小男孩,另一个字符代表小女孩。小孩总数不超过100

输出

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

样例输入

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

样例输出

2 3
5 6
4 7
8 9
1 10
12 13
11 14
0 15
#include<iostream>
using namespace std;
char children[101];
int boy = 0;//记录男生的数目
int couple = 0;//记录狗男女的数目
char m, f;//男,女
int date() {//函数名叫yue pao 。。。for (int i = 0; i < 2 * boy; i++) {bool stay = true;if (children[i] == m) {for (int j = i + 1; j < 2 * boy; j++) {if (children[j] == m)break;//不考虑男同问题,所以这里break,先让后面的继续if (children[j] == f) {children[i] = ' ';children[j] = ' ';cout << i <<' '<< j << endl;couple++;stay = false;//约到了,就不用在这浪费时间了,所以把位子清空,可以嘿嘿嘿去了。。。。break;}}}if (stay == false)break;//有人约到就跳出这层循环}if (couple != boy)//因为只考虑异性恋,所以如果情侣数目跟男生数目不相等,就证明还有男的是单身狗,所以继续递归date();return 0;
}
int main(){cin.getline(children, 101);m = children[0];//根据题意,无论第一个人长什么样,我们都把他当男的看for (int i = 0; i < 100; i++) {if (children[i] != m) {f = children[i];//不考虑有第三种性别的存在,所以长得跟男的不一样的,一律视为女的break;}}for (int i = 0; i < 100; i++) {if (children[i] == m)boy++;//数数有多少个男生}date();return 0;
}

[土狗之路]coursera C语言进阶练习题 排队游戏相关推荐

  1. [土狗之路]coursera 与 oj上的递归练习作业-- 单词翻转 角谷猜想

    嗯,递归弄得我头好痛,不过只能忍住继续学习. 第一题: 编程题#1:单词翻转 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: ...

  2. [土狗之路]Coursera 北京大学C++ 魔兽世界:备战

    这道题目中间因为学校正课耽误了很久,结果时间到了 coursera 把我的课都给锁了,哎,申请了助学金,慢慢弄吧,之前心态不好,确实错在了细节,现在debug以及代码重构了,重新把代码po上来,然后开 ...

  3. [土狗之路]coursera 北京大学C++ 魔兽世界:装备

    上课加上乱七八糟的事情,好久没有更新博客,现在开始继续更新. 直接上题: 编程题#2: 魔兽世界之二:装备 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后 ...

  4. c语言野指针导致问题,C语言进阶之路(三)----野指针的产生原因及解决办法

    1.会产生野指针的做法 #include //这就是一种错误的写法 int main(){ int *p = NULL; p = (int *)malloc(); //释放P所指向的内存空间,但指针变 ...

  5. C语言 | 进阶之路第一关

    目录 前言 - 文章概述 深入剖析数据在内存中的存储 数据的类型 整型在内存中的存储 浮点型在内存中的存储 指针进阶 字符指针 指针数组 数组指针 数组传参和指针传参 函数指针 函数指针数组 指向函数 ...

  6. Go语言进阶之路:并发爬虫,爬取空姐网所有相册图片

    上次聊到了<Go语言正则表达式>和<Go语言手撸一个LRU缓存>,这次利用正则表达式来编写一个并发爬虫. 说到爬虫,不得不提到前面写的<Python网络爬虫request ...

  7. c语言中通过键盘给一维数组赋值怎么_编程C语言进阶篇——构造类型:数组

    在c语言的实际应用中,我们常常需要同时对多个数据进行处理,如果没有专门批量处理数据的方法,就会给我们的程序编写造成巨大的影响.而这种批量处理数据的方法就是我们这次的主题--数组. 一.数组是什么 在c ...

  8. C语言进阶:程序中的三国天下 考研数据结构

    C语言笔记 第三十九课 程序中的三国天下 C语言笔记 第三十九课 程序中的三国天下_YLC_慕类的博客-CSDN博客 C基础第42课 -- 内存操作经典问题分析二 C基础第42课 -- 内存操作经典问 ...

  9. csharp进阶练习题:Esolang口译#1 - 介绍Esolangs和我的第一个解释(MiniStringFuck)【难度:2级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手

    csharp进阶练习题:Esolang口译#1 - 介绍Esolangs和我的第一个解释(MiniStringFuck)[难度:2级]: 对于这个习题的其余部分,我会建议考虑"他妈的&quo ...

最新文章

  1. Bootstrap按钮
  2. 球迷福利!Next VR本周将直播三场ICC比赛
  3. .net MVC 简单图片上传
  4. 去中心化的 RTC 通信平台架构设计
  5. 计划和跟踪工具 XPlanner
  6. 使用PowerShell模块SQL数据库备份– DBATools
  7. Python制作任意音频文件
  8. 《从零开始的RPG游戏制作教程》前言
  9. Windows下 Jenkins 下载、安装
  10. idea中各种颜色的含义
  11. android offtime编程,OFFTIME - 做功课就憋玩手机了! - Android 应用 - 【最美应用】
  12. 8、鼠标控制与32位模式切换
  13. 使用VIM是一种信仰
  14. T00ls内部旁注扫描器.rar
  15. SAP中国客户名单[转载]
  16. 1009 美好的一天
  17. 判断数组相同数c语言_单片机常用的14个C语言算法,看过的都成了大神!
  18. unity3d俯视角简易移动控制脚本及其易错点小分享
  19. BZOJ3745: [Coci2015]Norma【CDQ】
  20. ORACLE-023:令人烦恼的 ora-01722 无效数字

热门文章

  1. 2018:秋清集·跋
  2. 如何查看基金的PE,PB目前历史分位数
  3. 美联储主席就新冠和通货膨胀对经济影响的担忧发表讲话-证券,货币,商品市场大幅度波动
  4. 用祖传绝技烹饪烤鱼,他的店开业当天营业额就有几千元
  5. win10php测试,window_Win10对决Win8:测试表明两者相比没有性能优势,目前,要搞清楚Windows 10性能相 - phpStudy...
  6. 拓扑网络连通1-ensp
  7. 前端工具汇总(不定期更新)
  8. FPGA基础设计(一):VGA显示方法(文字、图形、波形)
  9. 潘朵拉魔盒开启,RPA公共服务风潮即将到来?
  10. 基于python+opencv利用颜色,区分多个目标(附带详细代码)