5月29日第十三届蓝桥杯国赛python中高年级组 小鸟看对方 题目、答案和解析

5月29日的蓝桥杯国赛来了,不确定这是第几题了,sorry哈

目录

题目:

输入描述:

输出描述:

样例输入:

样例输出:

思路:

代码: 

小结:


题目:

在一根电线上落有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只小鸟看,两侧小鸟面对面,这只鸟被2只小鸟看。关键就是第1只小鸟和最后一只,他们缺一侧的小鸟,那我们就给他们补上。

补上后你可以试试,无论第一只和最后一只头朝向哪里,加上的都不影响最终的正确结果,加上后还能让他们也符合规律。

代码: 

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中间英文逗号隔开

小结:

这次蓝桥杯国赛题目偏难,但硬做肯定能做上,这里小编要强调一点,考试前都会认为自己考试时一定不紧张,可考试紧张是必然的,不要刻意让自己不紧张,在紧张时候大脑有时会“短路”,所以一定要把自己的知识储备的牢牢的,就像1+1那么张口就来,在做题时要灵活思考,找规律,一定要保持大脑灵活哦!好啦,今天的文章就到这里啦,欢迎三连,点赞、关注、收藏。希望我发什么题尽管私信或评论区找我哦,题目有什么问题也可以来,欢迎你们!

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值