[土狗之路]coursera C语言进阶练习题 排队游戏
直接上题:
编程题#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语言进阶练习题 排队游戏相关推荐
- [土狗之路]coursera 与 oj上的递归练习作业-- 单词翻转 角谷猜想
嗯,递归弄得我头好痛,不过只能忍住继续学习. 第一题: 编程题#1:单词翻转 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: ...
- [土狗之路]Coursera 北京大学C++ 魔兽世界:备战
这道题目中间因为学校正课耽误了很久,结果时间到了 coursera 把我的课都给锁了,哎,申请了助学金,慢慢弄吧,之前心态不好,确实错在了细节,现在debug以及代码重构了,重新把代码po上来,然后开 ...
- [土狗之路]coursera 北京大学C++ 魔兽世界:装备
上课加上乱七八糟的事情,好久没有更新博客,现在开始继续更新. 直接上题: 编程题#2: 魔兽世界之二:装备 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后 ...
- c语言野指针导致问题,C语言进阶之路(三)----野指针的产生原因及解决办法
1.会产生野指针的做法 #include //这就是一种错误的写法 int main(){ int *p = NULL; p = (int *)malloc(); //释放P所指向的内存空间,但指针变 ...
- C语言 | 进阶之路第一关
目录 前言 - 文章概述 深入剖析数据在内存中的存储 数据的类型 整型在内存中的存储 浮点型在内存中的存储 指针进阶 字符指针 指针数组 数组指针 数组传参和指针传参 函数指针 函数指针数组 指向函数 ...
- Go语言进阶之路:并发爬虫,爬取空姐网所有相册图片
上次聊到了<Go语言正则表达式>和<Go语言手撸一个LRU缓存>,这次利用正则表达式来编写一个并发爬虫. 说到爬虫,不得不提到前面写的<Python网络爬虫request ...
- c语言中通过键盘给一维数组赋值怎么_编程C语言进阶篇——构造类型:数组
在c语言的实际应用中,我们常常需要同时对多个数据进行处理,如果没有专门批量处理数据的方法,就会给我们的程序编写造成巨大的影响.而这种批量处理数据的方法就是我们这次的主题--数组. 一.数组是什么 在c ...
- C语言进阶:程序中的三国天下 考研数据结构
C语言笔记 第三十九课 程序中的三国天下 C语言笔记 第三十九课 程序中的三国天下_YLC_慕类的博客-CSDN博客 C基础第42课 -- 内存操作经典问题分析二 C基础第42课 -- 内存操作经典问 ...
- csharp进阶练习题:Esolang口译#1 - 介绍Esolangs和我的第一个解释(MiniStringFuck)【难度:2级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手
csharp进阶练习题:Esolang口译#1 - 介绍Esolangs和我的第一个解释(MiniStringFuck)[难度:2级]: 对于这个习题的其余部分,我会建议考虑"他妈的&quo ...
最新文章
- Bootstrap按钮
- 球迷福利!Next VR本周将直播三场ICC比赛
- .net MVC 简单图片上传
- 去中心化的 RTC 通信平台架构设计
- 计划和跟踪工具 XPlanner
- 使用PowerShell模块SQL数据库备份– DBATools
- Python制作任意音频文件
- 《从零开始的RPG游戏制作教程》前言
- Windows下 Jenkins 下载、安装
- idea中各种颜色的含义
- android offtime编程,OFFTIME - 做功课就憋玩手机了! - Android 应用 - 【最美应用】
- 8、鼠标控制与32位模式切换
- 使用VIM是一种信仰
- T00ls内部旁注扫描器.rar
- SAP中国客户名单[转载]
- 1009 美好的一天
- 判断数组相同数c语言_单片机常用的14个C语言算法,看过的都成了大神!
- unity3d俯视角简易移动控制脚本及其易错点小分享
- BZOJ3745: [Coci2015]Norma【CDQ】
- ORACLE-023:令人烦恼的 ora-01722 无效数字
热门文章
- 2018:秋清集·跋
- 如何查看基金的PE,PB目前历史分位数
- 美联储主席就新冠和通货膨胀对经济影响的担忧发表讲话-证券,货币,商品市场大幅度波动
- 用祖传绝技烹饪烤鱼,他的店开业当天营业额就有几千元
- win10php测试,window_Win10对决Win8:测试表明两者相比没有性能优势,目前,要搞清楚Windows 10性能相 - phpStudy...
- 拓扑网络连通1-ensp
- 前端工具汇总(不定期更新)
- FPGA基础设计(一):VGA显示方法(文字、图形、波形)
- 潘朵拉魔盒开启,RPA公共服务风潮即将到来?
- 基于python+opencv利用颜色,区分多个目标(附带详细代码)