街区最短路径问题

来源:互联网 发布:阿里云素材库 编辑:程序博客网 时间:2024/04/29 06:29

街区最短路径问题

问题描述:

描述
一个街区有很多住户,街区的街道只能为东西、南北两种方向。

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

各个街道之间的间隔相等。

用(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));    }}        



0 0
原创粉丝点击