博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第3-6课:多点同线问题
阅读量:3571 次
发布时间:2019-05-20

本文共 591 字,大约阅读时间需要 1 分钟。

这一课我们介绍一个计算几何方面的穷举类算法问题。计算几何类的问题也是算法问题中的一个大的分类,并且在很多其他算法中都会用到一些几何公式,比如三角形剖分问题中如果是按照三角形的面积做最优剖分,则需要用到根据三角形的边长求面积的海伦公式。这一课我们用到的几何内容不多,只用到了求直线斜率的公式,主要还是为了演示穷举法的应用;同时还会介绍到一个用一遍扫描统计出有序序列中哪个值出现次数最多的代码技巧和快速排序在实际问题中的应用方法。

问题的提出

一个几何平面上有 N 个点,根据欧氏(欧几里得)几何原理,每两个点可以连成一条直线,N 个点可以连成很多条直线。当然,也会有多个点共线的情况出现,现在我们的问题是,在这 N 个点中,找出哪两个点组成的直线上包含最多的点,也就是找出含有最多点的那条直线。

enter image description here

图(1)多点共线问题示意图

如图(1)所示,在这么多直线中,绿色标识的那条直线包含了四个点,是包含最多点的直线。算法比赛中这个题目给出所有点的坐标,要求算法只输出包含最多点的那条直线上所包含的点的个数即可,所以最后的结果只是算法实现上复杂一点,数据模型其实非常简单。我们课程的主要目的是演示算法的分析、数据模型构建和编程实现算法的过程,以及在这个过程中分析和思考问题的方法,所以,我们修改一下题目要求。首先为每个点增加一个编号,然后要求在输出信息时,输出最多共线点的个数以及这些点的信息࿰

转载地址:http://gdcgj.baihongyu.com/

你可能感兴趣的文章
SpringBoot入门(二)场景启动器
查看>>
SpringBoot入门--自动配置
查看>>
自动配置原理
查看>>
TCP协议
查看>>
关于Linux系统使用遇到的问题-1:vi 打开只读(readonly)文件如何退出保存?
查看>>
spring注解版(一)
查看>>
SpringBoot中访问控制层(controller)得不到Json数据
查看>>
BFC(Block Formatting Context)
查看>>
什么是作用域,什么是闭包,什么是作用域链
查看>>
惰性求值,面向对象
查看>>
数据结构之列表
查看>>
es5中的arguments对象
查看>>
git本地仓库和远程仓库关联,分支重命名
查看>>
js对象的深拷贝,你真的觉得很简单吗?
查看>>
你真的了解map方法吗?手动实现数组map方法。
查看>>
带你手动实现call方法,让你收获满满
查看>>
前端知识体系
查看>>
使用join查询方式找出没有分类的电影id以及名称
查看>>
Qt教程(2) : Qt元对象系统
查看>>
驱动开发误用指针错误:Unable to handle kernel NULL pointer dereference at virtual address
查看>>