赞
踩
小明和同学们玩跳房子的游戏,现给出一排房子,请计算出小明最少需要跳几次就可戏,完成游戏时哪只脚落地?(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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。