很久以前朋友给的一道笔试题(收集金币,只能向下或向右移动,求最短路径)

N,M,K=map(int,input("(以空格隔开)请输入N,M,K:").split())#split(",")以逗号分隔

p=[]
for i in range(K):
kx,ky=map(int,input("输入金币坐标,x,y以空格隔开:").split())
p.append([kx,ky])


p.append([1,1])#加上入口位置
p.append([N,M])#加上出口位置
p.sort()
G=1#如果G=0那么不存在最短路径!
for i in range(K):
if p[i][1]>p[i+1][1]:
print("\n包含:",p[i],p[i+1],",所以不存在最短路径!")
G=0
break
m=[]
if G:
for j in range(len(p)-1):
tx=p[j+1][0]-p[j][0]
ty=p[j+1][1]-p[j][1]
if tx:
m.append("下"*tx)
if ty:
m.append("右"*ty)
print("\n移动顺序为:","".join(m))#转换字符串并去掉空格,不显示重复金币位置移动

posted @ 2018-09-29 00:09  大林er  阅读(275)  评论(0编辑  收藏  举报