1. 程式人生 > >OJ 1006:街區最短路徑問題

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