python 练习题-找最短路径

 1 # @Author  :whyCai
 2 # @Time    :2021/4/8 23:28
 3 
 4 '''
 5 
 6 输入一串数字,以空格相隔,要走到最短路径,输出最短路径的步数,如果没有,输出-1
 7 要求:
 8 1.第一步 大于1小于长度的一半
 9 2.以后的步数为第一步走到该数字的步数
10 
11 例:
12 输入
13 7 5 9 4 2 6 8 3 5 4 3 9
14 输出:
15 2
16 解释:第一次走2步,第二次9步正好结束
17 
18 输入:
19 1 2 3 7 1 5 9 3 2 1
20 输出:
21 -1
22 '''
23 import sys
24 for line in sys.stdin:
25     a = line.split()
26     break
27 l = len(a)
28 res=[]
29 n = 1
30 
31 if l%2 ==3:
32     ll =2
33 else:
34     ll = int(l/2)
35 
36 for i in range(1,ll):
37     while True:
38         total = i+int(a[i])
39         print(total)
40         if  total  <l-1:
41             i = total
42             n = n+1
43         elif total ==l-1:
44             res.append(n)
45             break
46         else:
47             break
48 
49 if len(res)==0:
50     print(-1)
51 else:
52     print(min(res))
53 
54 
55 # ps 执行了10条用例,出错了6个,暂未找到原因··········
原文地址:https://www.cnblogs.com/whycai/p/14638501.html