街區最短路徑問題

街區最短路徑問題

問題描述:

描述 一個街區有很多住戶,街區的街道只能爲東西、南北兩種方向。

住戶只可以沿着街道行走。

各個街道之間的間隔相等。

用(x,y)來表示住戶坐在的街區。

例如(4,20),表示用戶在東西方向第4個街道,南北方向第20個街道。

現在要建一個郵局,使得各個住戶到郵局的距離之和最少。

求現在這個郵局應該建在那個地方使得所有住戶距離之和最小;

求距離


 
#include<stdio.h>
#include<math.h>
#include<string.h>
void p1(int a[],int n)
{
    int i,j,k,l;
    for(i=0; i<n-1; i++)
    {
        for(j=0; j<n-1-i; j++)
        {
            if(a[j]<a[j+1])
            {
                k=a[j];
                a[j]=a[j+1];
                a[j+1]=k;
            }
        }
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        int m;
        scanf("%d",&m);
        int a[105],b[105];
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(int i=0; i<m; i++)
            scanf("%d%d",&a[i],&b[i]);
        p1(a,m);
        p1(b,m);
        double s=0;
        for(int i=0; i<m/2; i++)
        {
            s+=a[m-i-1]-a[i]+b[m-i-1]-b[i];
        }
        printf("%.lf\n",fabs(s));
    }
}
        



發佈了39 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章