刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

编程实现:

在一根电线上落有N只小鸟,有的小鸟头向左看,有的小鸟头向右看,且每只小鸟只能看到它视线前的那一只小鸟。

给定N只小鸟头的朝向,头向左看的小鸟使用小写字母“q”表示,头向右看的小鸟用小写字母“p”表示,请你计算出N只小鸟中有多少只小鸟被0只小鸟看到,多少只小鸟被1只小鸟看到,多少只小鸟被2只小鸟看到。 

例如:N=6,6只小鸟头的朝向分别为p,q,p,p,q,q。

如图:有2只小鸟被0只小鸟看到(第3只和第6只);有2只小鸟被1只小鸟看到(第1只和第2只);有2只小鸟同时被2只小鸟看到(第4只和第5只)。

则输出三个数字分别为2,2,2。

输入描述:

第一行输入一个正整数N(3≤N≤1000),表示有N只小鸟落在电线上

第二行输入N个字符,字符只能为“q”和“p”,“q”表示小鸟头向左看,“p”表示小鸟头向右看,字符之间以一个英文逗号隔开

输出描述:

一行输出三个整数,分别为有几只小鸟被0只小鸟看到;有几只小鸟被1只小鸟看到;有几只小鸟被2只小鸟看到;整数之间一个英文逗号隔开


样例输入:

6
p,q,p,p,q,q

样例输出:

2,2,2

使用微信搜索喵呜刷题,轻松应对考试!

答案:

首先,我们定义三个变量,分别表示被0只小鸟看到、被1只小鸟看到和被2只小鸟看到的小鸟数量,初始值都为0。然后,我们遍历输入的小鸟朝向字符串,对于每个小鸟,检查其前面和后面各有一个小鸟的朝向情况。如果前面没有小鸟或者前面的小鸟朝向和当前小鸟朝向相同,那么当前小鸟被0只小鸟看到;如果前面和后面各有一个小鸟,并且这两个小鸟的朝向不同,那么当前小鸟被1只小鸟看到;如果前面和后面各有一个小鸟,并且这两个小鸟的朝向相同,那么当前小鸟被2只小鸟看到。最后,我们输出这三个变量的值。

解析:

【喵呜刷题小喵解析】:
这个问题可以通过遍历小鸟朝向字符串来解决。我们需要找出哪些小鸟被0只小鸟看到,哪些小鸟被1只小鸟看到,哪些小鸟被2只小鸟看到。对于每个小鸟,我们需要检查其前面和后面各有一个小鸟的朝向情况。如果前面没有小鸟或者前面的小鸟朝向和当前小鸟朝向相同,那么当前小鸟被0只小鸟看到;如果前面和后面各有一个小鸟,并且这两个小鸟的朝向不同,那么当前小鸟被1只小鸟看到;如果前面和后面各有一个小鸟,并且这两个小鸟的朝向相同,那么当前小鸟被2只小鸟看到。最后,我们输出这三个变量的值。

具体实现时,我们可以定义一个长度为N的数组,用于记录每个小鸟被多少只小鸟看到。然后,我们遍历小鸟朝向字符串,对于每个小鸟,检查其前面和后面各有一个小鸟的朝向情况,更新对应数组的值。最后,我们遍历数组,统计被0只小鸟看到、被1只小鸟看到和被2只小鸟看到的小鸟数量,并输出结果。

需要注意的是,如果小鸟朝向字符串的开头或结尾有多余的字符,或者字符串长度小于3,那么可能会导致程序出错。因此,在实现时,我们需要对输入进行合法性检查,确保输入符合题目要求。
创作类型:
原创

本文链接:编程实现: 在一根电线上落有N只小鸟,有的小鸟头向左看,有的小鸟头向右看,且每只小鸟只能看到它视线前

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share