平面上N个点,每两个点都确定一条直线,求出斜率最大的那条直线所通过的两个点(斜率不存在的情况不考虑)。时间效率越高越好。
关于这道题,网上已经给出了解答要点:
3个点A,B,C,把它们的按x坐标排序。假设排序后的顺序是ABC,那么有两种情况:

1.ABC共线,则k(AB)=k(BC)=k(AC)
2.ABC不共线,则ABC将形成一个三角形,那么k(AC)<max(k(AB), k(BC))

其中k()表示求斜率。
所以程序的基本步骤就是:

1.把N个点按x坐标排序。
2.遍历,求相邻的两个点的斜率,找最大值。

时间复杂度Nlog(N)。

#include<stdio.h>
#include<stdlib.h>int cmp(const void *a,const void *b)
{return(*(int *)a-*(int *)b);
}int main()
{float k1=0.0,k2=0.0;int n,i;float maxk=0.0;int x1,x2,y1,y2;int x[100002]={0};int y[100002]={0};scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&x[i]);scanf("%d",&y[i]);}qsort(x,n,sizeof(x[1]),cmp);  maxk=(y[1]-y[0])/(x[1]-x[0]);x1=x[0];x2=x[1];y1=y[0];y2=y[1];for(i=0;i<n-1;i++){k1=(y[i+1]-y[i])/(x[i+1]-x[i]);if(k1>maxk){x1=x[i];x2=x[i+1];y1=y[i];y2=y[i+1];maxk=k1;}} printf("(%d,%d) (%d,&d)\n",x1,y1,x2,y2);return 0;
}

平面上N个点,求斜率最大的那条直线通过的两点相关推荐

  1. 平面上N个点求斜率最大的两个点

    平面上N个点求斜率最大两个点 1.根据X将N个点排序 2.最大的斜率为max(p[i], p[i+1]) 可以证明如果有ABC三个点则AB与BC的斜率一个大于AC另一个则小于AC, k3 = (c - ...

  2. 知道一点怎么设直线方程_如何快速求一个点有关一条直线的对称点的坐标?

    1. 设所求对称点A的坐标为(a,b). 根据所设对称点A(a,b)和已知点B(c,d),可以表示出A.B两点之间中点的坐标为((a+c)/2,(b+d)/2),且此中点在已知直线上.将此点坐标代入已 ...

  3. C语言算2个坐标点之间的距离,c语言求平面上2个坐标点的直线距离、求俩坐标直线距离作为半径的圆的面积、递归、菲波那次数列、explode...

    #include #include #include char explode( char * str , char symbol ); double distance ( int x1 , int ...

  4. 给定两个数组arrx和arry,长度都为N。代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点?

    问题描述: 给定两个数组arrx和arry,长度都为N.代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点? 思想 坐标系中两个点 ...

  5. 复平面上gamma函数_神奇的Gamma函数 (中)

    Gamma 函数欣赏 Each generation has found something of interest to say about the gamma function. Perhaps ...

  6. 复平面上gamma函数_Gamma函数

    Gamma函数在现代数学分析中被深入研究,在概率论中也是无处不在,很多统计分布都和这个函数相关.Gamma 函数作为阶乘的推广,首先它也有和 Stirling 公式类似的一个结论: 另外, Gamma ...

  7. 圆与平面的接触面积_如果一个绝对的圆放在绝对的平面上,接触面是不是无限小?...

    这种问题其实并不难解答:如果你真的能找到一个绝对的圆还有一个绝对平的平面上,并且保证放上去之后圆和平面不会有任何变化,那么接触面就可以是无限小! 如果不能,很抱歉,接触面很显然就不会是无限小! 那么你 ...

  8. Java、Scala使用tan和arctan求斜率和倾斜角

    实现代码 import java.text.DecimalFormatobject Test1 {def main(args: Array[String]): Unit = {val tan1 = g ...

  9. Python实现最小二乘法拟合直线(求斜率截距)

    利用最小二乘法拟合直线,实现了对一系列点拟合出其最接近的直线,并给出公式,包括斜率和截距.并且绘制出最终拟合线. 完整代码如下: # 核心代码,求斜率w,截距b def fit(data_x, dat ...

最新文章

  1. 干货 | 大数据人工智能领域从菜鸟到高手晋级指南
  2. db2设置默认schema_DB2中设置当前会话的Schema
  3. 061_Apex 异常捕捉
  4. C++ Socket编程步骤
  5. angular.js的路由和模板在asp.net mvc 中的使用
  6. 某工程车零部件制造厂商
  7. python怎么获取redis中的数据_python 获取的redis里的数据怎么处理
  8. Multiload-ng
  9. python面向对象训练
  10. fat jar包缺点_什么是fat JAR?
  11. 【转】Linux删除文件未释放空间问题处理
  12. 创建一个vue-cli项目
  13. 蕊动矿机linux cpu超频,蚂蚁l3矿机超频方法!最佳超频参数!  |  呆毛网
  14. doc 问卷调查模板表_问卷调查表.doc
  15. 使用VSCode运行C语言
  16. 替代计算机内存条,电脑想加内存条,DDR3,DDR4傻傻分不清?
  17. 中国“中产阶级”只赚钱不读书 被指精神荒芜
  18. 一篇散文简单的了解Redis
  19. 使用qemu模拟X86处理器加载linux kernel+busybox文件系统并调试
  20. 利用计算图计算公积金余额

热门文章

  1. EPLAN教程 | EPLAN表格居然还能这么玩
  2. 第 1 集:招聘风云!
  3. 【论文简述】Multiview Stereo with Cascaded Epipolar RAFT(ECCV 2022)
  4. python cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library
  5. java使用DFA算法实现敏感词过滤
  6. 表情包生成1.0安卓版 斗图永无止尽
  7. 携程的技术氛围怎么样?
  8. centos7 ssh升级后服务不稳定不断重启,查看sshd服务状态为activating(start)的解决办法
  9. linux清垃圾软件,似Win清理工具!Ubuntu下4个应用替代品
  10. 网络流与线性规划24题02太空飞行计划问题