测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A33784. 电线上的小鸟

填空题 困难

题目描述

电线上的小鸟

题目描述

在一根电线上落有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

参考答案

n=int(input()) # 输入小鸟数 m=['q']+input().split(',')+['p'] # 创建小鸟的头朝向列表,给第一只和最后一只小鸟,加上一只“假想鸟” a=b=c=0 # a代表被0只小鸟看到,b代表被1只小鸟看到,c代表被2只小鸟看到 for i in range(1,n+1): # i代表索引号,从第一只小鸟到第六只小鸟 if m[i-1]==m[i+1]: # 如果两侧头朝向一致 b+=1 # 被1只小鸟看到的小鸟数+1 elif m[i-1]=='q' and m[i+1]=='p': # 如果两侧小鸟背对背 a+=1 # 被0只小鸟看到的小鸟数+1 else: # 剩下的情况就是两侧小鸟面对面 c+=1 # 被2只小鸟看到的小鸟数+1 print(a,b,c,sep=',') # 打印abc中间英文逗号隔开
上一题 下一题