小明和同学们玩跳房子的游戏,现给出一排房子,请计算出小明最少需要跳几次就可戏,完成游戏时哪只脚落地?(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)