| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 381 人关注过本帖
标题:计算最长点距
只看楼主 加入收藏
redunkind
Rank: 2
等 级:论坛游民
帖 子:36
专家分:14
注 册:2011-4-10
结帖率:50%
收藏
 问题点数:0 回复次数:1 
计算最长点距
问题是在一个平面内有多个点,求距离最长的两点。
输入
输入有多组测试数据。 每组测试数据包括N+1行:第一行输入N(1<N≤1000)。表示点的个数。 下面有N行,分别表示该点的X轴和Y轴坐标。
所有输入数据均为整数并且不大于32767,输入直到文件结尾。
输出
对于每一组数据,在一行内输出X1,Y1,X2,Y2,其中(X1,Y1)和(X2,Y2)即为距离最长的两个点,要求横坐标小的先输出,即满足X1≤X2,如果横坐标相等即X1=X2,则先输出纵坐标小的,即满足Y1≤Y2。
样例输入
3
0 0
1 1
2 2
3
0 0
-1 1
1 1
样例输出
0 0 2 2
-1 1 1 1
求解怎么做???
搜索更多相关主题的帖子: 数据 
2011-07-23 08:39
redunkind
Rank: 2
等 级:论坛游民
帖 子:36
专家分:14
注 册:2011-4-10
收藏
得分:0 
#include <stdio.h>
int main()
{
    __int64 a[1001][2],q[1001],z[1001],c,d,e,i,k,j,l,m,n,t,r;
    __int64 b[1001],max;
    while(scanf("%I64d",&n)!=EOF)
    {
        k=0;
    for(i=0;i<n;i++)
    scanf("%I64d %I64d",&a[i][0],&a[i][1]);
    for(i=0;i<n-1;i++)
    for(j=i+1;j<n;j++)
    {
        b[k]=(a[j][1]-a[i][1])*(a[j][1]-a[i][1])+
               (a[j][0]-a[i][0])*(a[j][0]-a[i][0]);
        q[k]=i;
        z[k]=j;
        k++;
    }
    max=b[0];
    l=q[0];
    m=z[0];
    for(i=0;i<k;i++)
    {
        if(b[i]>max)
        {
        max=b[i];
        l=q[i];
        m=z[i];
        }
    }
    if((a[l][0]>a[m][0])||((a[l][0]==a[m][0])&&(a[l][1]>a[m][1])))
    {
        t=a[l][0];
        a[l][0]=a[m][0];
        a[m][0]=t;
        r=a[l][1];
        a[l][1]=a[m][1];
        a[m][1]=r;
    }
    printf("%I64d %I64d %I64d %I64d\n",a[l][0],a[l][1],a[m][0],a[m][1]);
    }
    return 0;
}
这是我的代码可是教上去却是什么非法内存访问。要么就是错误。。。。。
2011-07-23 08:43
快速回复:计算最长点距
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016570 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved