蓝桥杯2021年PYTHON 真题,跳房子

小明和同学们玩跳房子的游戏,现给出一排房子,请计算出小明最少需要跳几次就可戏,完成游戏时哪只脚落地?(0代表左脚,1代表右脚)

游戏规则1:地上画有n个正方形依次排开代表房子,每个房子里标有数字,数字代表最多可以跳几个房子,数字不能为0(如:数字为2,可以直接向前跳1个房子,也可以直接向前跳2个房子)。

列如:
地上画有5个正方形代表房子,房子里面的数字分别为2,1,4,2,1。
小明在第一个房子是可以选择跳到第2个房子或者第3个房子,为了所跳次数最少选择跳到第3个房子(房子数字为4);房间数字为4,可以选择跳到第4个房子或者第5个房子,为了所跳次数最少选择跳到第5个房子。故至少需要跳两次就可以完成游戏。
游戏规则2:只能单脚落地,左脚起跳右脚落地,右脚起跳左脚落地;第一次起跳为左脚
列如:
小明一共跳两次,第一次左脚起跳,右脚落地;第二次右脚起跳,左脚落地;完成游戏时左脚落地

输入描述
第一行输入n个正整数,正整数之间用英文逗号隔开

输出描述
输出两个整数,整数之间用英文逗号隔开;第一个整数表示最少跳的次数,第二个整数表示落地的脚(0代表左脚,1代表右脚)

看到这个题时,我们会觉得挺难的。其实仔细理解会发现它并不难,主要就是在考你递归的应用。下面是悦儿姐自己想的一种通俗易懂的解法,望大家采纳。

c=input().split(',')  # 输入房子内的数字
b=[int(i) for i in c]  # 将其转成列表,元素转成整数
i=0
k=0

def fz(a): 
    global i,k
    if a[i]>=len(a)-i-1:  # 递归终止条件
        k+=1  # 累计次数
        if k%2==0:  # 判断左右脚
            print(k,0)
        else:
            print(k,1)
    else:
        i+=a[i]
        k+=1
        fz(a)  # 调用自身

        
fz(b)  

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>