找到最长的距离

时间:2014-02-22 08:53:51

标签: c

该程序用于找到网格中N个点的最小距离,选择其中一个点为集线器。如果一个人想要从一个点到另一个点,他必须通过枢纽点。程序得到了编译,但没有扫描输入。

#include<stdio.h>
#include<conio.h>
#include <math.h>
int abs1(int,int);
int dist(int,int,int,int); 
main()
{

    int x[200],y[2000],m,min,max1,max2,i,j,n,d[1000][1000];
    scanf("%d",&n);
    scanf("\n");
    for(i=0;i<n;i++)
    {
        scanf("\n%d",&x[i]);
        scanf("%d",&y[i]);
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(i==j)
                continue;
            d[i][j]=dist(x[i],x[j],y[i],y[j]);
        }
    }
    min=10000;
    for(i=0;i<n;i++)
    {
        max1=0;
        max2=0;
        for(j=0;j<n;j++)
        {
            if(i==j)
                continue;
            if(d[i][j]>max1)
                max1=d[i][j];
            else if(d[i][j]>max2)
                max2=d[i][j];
        }
        m=max1+max2;
        if(m<min)
            min=m;
    }
    printf("\n%d",min);
    getch();
}
int abs1(int p,int q)
{
    if((p-q)<0)
        return (q-p);
    else
        return (p-q);
}
int dist(int x1,int x2,int y1,int y2)
{
    int e;
    e=abs1(x1,x2)+abs1(y1,y2);
    return(e);
}  

1 个答案:

答案 0 :(得分:0)

你正在定义两个大数组,即'd [1000] [1000]'缩小尺寸,你的错误就会消失。参考你也可以访问

http://www.daniweb.com/software-development/c/threads/314070/2d-arrays-problem

http://www.linuxquestions.org/questions/programming-9/c-array-size-limit-282519/