OJ 1006:街区最短路径问题

OJ 1006:街区最短路径问题

因为只能东西,南北走,所以求一点到另一点的距离就等于横纵坐标的差的绝对值之和,我们将每个点的横坐标取出来,纵坐标取出来,这个问题就成了这些数到哪个数的距离的和最小,分别求出横坐标和纵坐标对应的哪个和,然后求和就行了

n=int(input())
while n>0:
    m=int(input())
    l=[[] for x in range(m)]
    l1=[]
    l2=[]
    l3=[]
    l4=[]
    for i in range(m):
        l[i]=[int(x) for x in input().split()]
    for j in range(m):
        l1.append(l[j][0])
        l2.append(l[j][1])
    a=max(l1)
    b=min(l1)
    c=max(l2)
    d=min(l2)
    k=b
    e=d
    while k<=a:
        sum1=0
        for q in l1:
            sum1 += abs(q-k)
        l3.append(sum1)
        k +=1
    while e<=c:
        sum2=0
        for p in l2:
            sum2 += abs(p-e)
        l4.append(sum2)
        e +=1
    g=int(min(l3))+int(min(l4))
    print(g)
    n -= 1
    

猜你喜欢

转载自blog.csdn.net/weixin_43763889/article/details/84346796