| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1425 人关注过本帖
标题:SOS!求检查程序,到17个点距离之和最小的点的坐标
只看楼主 加入收藏
ajayan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-3-26
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
SOS!求检查程序,到17个点距离之和最小的点的坐标
    各位高手,菜鸟我编了个程序,程序是:
      十七个点的坐标已知,在平面(21430250<x<21433500),(4570250<y<4572500)区间内求一个点,使得(x,y)到这十七个点的距离之和最小。程序可以运行,但是结果是错的。

麻烦高手检查检查,错误的话请指出那里出错了,在线等!!

  #include<stdio.h>
#include<math.h>
void main()
{int i,x1,y1,s,sum1,sum2,s0,x,y;

int A[17]={21431240,21431280,21431330,21431390,21431480,21431590,21430780,21430780,21430830,21430880,21431980,21432080,21432190,21432270,21430430,21432730,21432880};
int B[17]={4571936,4571746,4571544,4571355,4571153,4570975,4571355,4571165,4570963,4570726,4571740,4571550,4571408,4571218,4570572,4571592,4571456};

for(i=0;i<17;i++)
{
    sum1=0;
    x1=A[i];
    y1=B[i];
    s0=(21430250-x1)*(21430250-x1)+(4570250-y1)*(4570250-y1);
    sum1=sum1+s0;
}

for(x=21430250;x<21433500;x++)
{
    for(y=4570250;y<4572500;y++)
        {
        for(i=0;i<17;i++)
                {
                    sum2=0;
                    x1=A[i];
                    y1=B[i];
                    s=(x-x1)*(x-x1)+(y-y1)*(y-y1);
                    sum2=sum2+s;
                }
        if (sum2<sum1)
            sum1=sum2;
        else sum1=sum1;
        }
}
         
 printf("x=%d\n",x);                             
 printf("y=%d\n",y);

}
搜索更多相关主题的帖子: include 在线 
2013-03-26 17:36
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:10 
正确结果是多少?

x = 21432880
y = 4571456

???


[fly]存在即是合理[/fly]
2013-03-26 17:48
ajayan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-3-26
收藏
得分:0 
是不是程序太乱了。。自己顶!
2013-03-26 17:50
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
我得吃饭了,时间不多,且不管答案是否正确,你的代码本身就有问题

x 和 y 到底是干嘛的?

是控制循环还是记录结果的?

不用执行也知道你的结果是21433500 和 4572500。

把这个想清楚再说吧!


[fly]存在即是合理[/fly]
2013-03-26 17:53
ajayan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-3-26
收藏
得分:0 
回复 2楼 azzbcc
不是哦,你说的这个是最后一个点的坐标。在图上明显到其他点的距离之和不是最小的啊
2013-03-26 17:56
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
嗯,还有最内层求距离之和的那个循环 sum2 每次都被初始化了

移到循环前


[fly]存在即是合理[/fly]
2013-03-26 18:04
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <math.h>
#include <LIMITS.H>
void main()
{
    int i,x1,y1,s,sum1,sum2,x,y, X = 0, Y = 0;
    
    int A[17]={21431240,21431280,21431330,21431390,21431480,21431590,21430780,21430780,21430830,21430880,21431980,21432080,21432190,21432270,21430430,21432730,21432880};
    int B[17]={4571936,4571746,4571544,4571355,4571153,4570975,4571355,4571165,4570963,4570726,4571740,4571550,4571408,4571218,4570572,4571592,4571456};
    
/*    for(i=0;i<17;i++)
    {
        sum1=0;
        x1=A[i];
        y1=B[i];
        s0=(21430250-x1)*(21430250-x1)+(4570250-y1)*(4570250-y1);
        sum1=sum1+s0;
    }
*/
    sum1 = INT_MAX;
    for(x=21430250;x<21433500;x++) 
    {
        for(y=4570250;y<4572500;y++)
        {
            sum2=0;
            for(i=0;i<17;i++)
            {
                x1=A[i];
                y1=B[i];
                s=(x-x1)*(x-x1)+(y-y1)*(y-y1);
                sum2=sum2+s;
            }
            if (sum2<sum1)
            {
                X = x, Y = y;
                sum1=sum2;
            }
        }
    }
    if (0 == X && 0 == Y)
    {
        return;
    }
    printf("x = %d\n", X);                             
    printf("y = %d\n", Y);                          
    printf("sum = %d\n", sum1);
    
}
收到的鲜花
  • ajayan2013-03-26 21:29 送鲜花  3朵   附言:好文章


[fly]存在即是合理[/fly]
2013-03-26 18:05
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:10 
题目有说目标坐标一定是整数点?

[ 本帖最后由 czz5242199 于 2013-3-26 18:50 编辑 ]
2013-03-26 18:13
ajayan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-3-26
收藏
得分:0 
回复 7楼 azzbcc
顶礼膜拜!谢谢了~!就是需要的那个点
2013-03-26 21:28
快速回复:SOS!求检查程序,到17个点距离之和最小的点的坐标
数据加载中...
 
   



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

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