| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1535 人关注过本帖
标题:这个程序怎么编写阿,请高手指点,急,在线等……?
只看楼主 加入收藏
sincere_zjh
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-9-28
收藏
 问题点数:0 回复次数:11 
这个程序怎么编写阿,请高手指点,急,在线等……?
已知平面上(直角坐标系)的N个点,请编写一个程序,求同一条直线所能通过的最多点数。
搜索更多相关主题的帖子: 编写 在线 
2008-01-10 08:43
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:0 
每两点求出斜率,看哪个斜率数值复合的最多
2008-01-10 09:04
sincere_zjh
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-9-28
收藏
得分:0 
能否给出具体的程序阿

2008-01-10 09:22
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
自己想了再说,现在懒人可真多啊

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-01-10 09:29
ConZhang
Rank: 1
来 自:北京
等 级:新手上路
帖 子:282
专家分:0
注 册:2007-8-7
收藏
得分:0 
求斜率是可以的
2008-01-10 09:33
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
求了斜率还不够,小心平行线哦~嘿嘿

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-01-10 11:31
sincere_zjh
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-9-28
收藏
得分:0 
难道没有一个会的吗?????

2008-01-11 08:52
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
实在不行就穷举,N个点最多可确定 (N - 1) * N / 2 条直线,逐一排查,看哪一条直接通过的点最多。

不过应该有更好的算法。

坚决不跟用TC的人打交道!
2008-01-11 11:47
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
收藏
得分:0 
用斜率算可以
A与B的斜率 如果相同 A与C的斜率..A与N的斜率
否则 B与C的斜率 B与D的斜率...
复杂度o(n!)

How are you 怎么是你?
How old are you   怎么老是你?
2008-01-11 12:16
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
收藏
得分:0 
程序代码:
#include "stdio.h"
#define N 11
struct DJ
{
    float x;
    float y;
};

int main()
{
    int maxnum=0;
    struct DJ all[N];
    //初始化
    for(int i=0;i!=N;++i)
        if(scanf("%f%f",&all[i].x,&all[i].y)==EOF)
            break;
    //start
    for(int i=0,k;i!=N;++i)
    {
        int temp[N] = {0};
        float value[N] = {0};
        for(int j=i+1;j!=N;++j)
        {
            value[j]=(all[i].y - all[j].y)/(all[i].x - all[j].x);
            //寻找是否有一样的斜率
            for(k=i+1;k!=j;++k)
                if(value[k]==value[j])
                    break;
            //记录斜率相同点数
            temp[k]++;
        }
        for(int i=0;i!=N;++i)
            if(maxnum<temp[i])
                maxnum=temp[i];
    }
    printf("%d",maxnum+1);
    return 0;
}
看了看 用斜率做非常限制斜率的要求,应为斜率可能相当大,也可能为零,可以考虑用其它方法做

How are you 怎么是你?
How old are you   怎么老是你?
2008-01-11 13:36
快速回复:这个程序怎么编写阿,请高手指点,急,在线等……?
数据加载中...
 
   



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

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