A25746. 编程实现:小明和同学们玩跳房子的游戏,现给出一排房子,请计算出小明最少需要跳几次就可以完成游戏,完成游戏时哪只脚落地?(0代表左脚,1代表右脚)游戏规则1:地上画有n个正方形依次排开代表房子,每个房子里标有数字,数字代表最多可以跳几个房子,数字不能为0(如:数字为2,可以直接向前跳1个房子,也可以直接向前跳2个房子)。例如:地上画有5个正方形代表房子,房子里面的数字分别为2,1,4,2,1。小明…
填空题
中等
知识点
题目描述
编程实现:
小明和同学们玩跳房子的游戏,现给出一排房子,请计算出小明最少需要跳几次就可以完成游戏,完成游戏时哪只脚落地?(0代表左脚,1代表右脚)
游戏规则1:地上画有n个正方形依次排开代表房子,每个房子里标有数字,数字代表最多可以跳几个房子,数字不能为0(如:数字为2,可以直接向前跳1个房子,也可以直接向前跳2个房子)。
例如:
地上画有5个正方形代表房子,房子里面的数字分别为2,1,4,2,1。
小明在第1个房子时可以选择跳到第2个房子或者第3个房子,为了所跳次数最少选择跳到第3个房子(房子数字为4);房间数字为4,可以选择跳到第4个房子或者第5个房子,为了所跳次数最少选择跳到第5个房子。故至少需要跳两次就可以完成游戏。
游戏规则2:只能单脚落地,左脚起跳右脚落地,右脚起跳左脚落地;第一次起跳为左脚。
例如:
小明一共跳两次,第一次左脚起跳,右脚落地;第二次右脚起跳,左脚落地;完成游戏时左脚落地。
输入描述:
第一行输入n个正整数,正整数之间用英文逗号隔开
输出描述:
输出两个整数,整数之间用英文逗号隔开;第一个整数表示最少跳的次数,第二个整数表示落地的脚(0代表左脚,1代表右脚)
样例输入:
2,1,4,2,1样例输出:
2,0参考答案
#参考答案1
l = input().split(",")
for i in range(0,len(l)):
l[i] = int(l[i])
n = 0
max1 = 0
t = True
count = 0
for i in range(10):
for j in range(n+1,n+l[n]+1):
if j >= (len(l)-1):
t = False
break
elif j+l[j] > max1:
max1 = j
n = max1
count+= 1
if t == False:
break
print(count, end=",")
print(count%2)
#参考答案2
array = [int(item) for item in input().split(",")]
def jump(position,array):
if position + 1 >= len(array):
return [0,0]
minvalue = [9999999999999999999,0]
for index in range(position + 1,position + array[position] + 1):
answer = jump(index,array)
if answer[0] < minvalue[0]:
minvalue = answer
minvalue[0] += 1
minvalue[1] = 1 - minvalue[1]
#return [count,side]
return minvalue
print("%d,%d"%tuple(jump(0,array)))答案解析
评分标准:
7分:能正确输出一组数据;
7分:能正确输出两组数据;
7分:能正确输出三组数据;
7分:能正确输出四组数据;
7分:能正确输出五组数据。
上一题
下一题