Max Points on a Line

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.

参考:http://blog.csdn.net/doc_sgl/article/details/17103427

AC的代码:

#include<iostream>
#include<map>
#include<vector>
#include<set>
#include<unordered_map>
#include<climits>
using namespace std;struct Point
{int x;int y;Point():x(0),y(0) {}Point(int a,int b):x(a),y(b) {}
};class Solution {
public:int maxPoints(vector<Point> &points) {// IMPORTANT: Please reset any member data you declared, as// the same Solution instance will be reused for each test case.unordered_map<float,int> mp;int maxNum = 0;for(int i = 0; i < points.size(); i++){mp.clear();mp[INT_MIN] = 0;int duplicate = 1;for(int j = 0; j < points.size(); j++){if(j == i) continue;if(points[i].x == points[j].x && points[i].y == points[j].y){duplicate++;continue;}float k = points[i].x == points[j].x ? INT_MAX : (float)(points[j].y - points[i].y)/(points[j].x - points[i].x);mp[k]++;}unordered_map<float, int>::iterator it = mp.begin();for(; it != mp.end(); it++)if(it->second + duplicate > maxNum)maxNum = it->second + duplicate;}return maxNum;}
};int main()
{Solution s;vector<Point> pp= {Point(0,0),Point(0,0),Point(3,10),Point(0,2),Point(0,2),Point(3,10)};cout<<s.maxPoints(pp)<<endl;
}

超时的代码:

#include<iostream>
#include<map>
#include<vector>
#include<set>
using namespace std;struct Point
{int x;int y;Point():x(0),y(0) {}Point(int a,int b):x(a),y(b) {}
};
struct Line
{double k;double t;Line(double a,double b):k(a),t(b) {}
};
bool operator==(const Point &a,const Point &b)
{return a.x==b.x&&a.y==b.y;
}
bool operator<(const Point &a,const Point &b)
{return a.x==b.x?a.y<b.y:a.x<b.x;
}
bool operator==(const Line &a,const Line &b)
{return a.k==b.k&&a.t==b.t;
}
bool operator<(const Line &a,const Line &b)
{return a.k==b.k?a.t<b.t:a.k<b.k;
}
class Solution
{
public:int maxPoints(vector<Point> &points){if(points.empty()||points.size()==1)return points.size();map<Line,set<Point> > mp;int i,j;int count=0;for(i=0; i<(int)points.size()-1; i++){for(j=i+1; j<(int)points.size(); j++){Point x=points[i];Point y=points[j];double k;double t;if(x.x==y.x){k=1e20;t=x.x;}else{k=(y.y-x.y)/(y.x-x.x);t=x.y-x.x*k;}mp[{k,t}].insert(x);mp[{k,t}].insert(y);}}auto start=mp.begin();while(start!=mp.end()){cout<<start->first.k<<" "<<start->first.t<<" "<<start->second.size()<<endl;set<Point> st=start->second;multiset<Point> mul(points.begin(),points.end());auto it=st.begin();int dup=0;while(it!=st.end()){dup+=mul.count(*it)-1;it++;}if(count<(int)st.size()+dup)count=st.size()+dup;start++;}return count;}
};int main()
{Solution s;vector<Point> pp= {Point(0,0),Point(0,0),Point(3,10),Point(0,2),Point(0,2),Point(3,10)};cout<<s.maxPoints(pp)<<endl;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

115怎么利用sha1下载东西_618“甩”度娘,拥抱115,体验和价格才是王道

网盘价钱​前天618&#xff0c;圈子里的朋友几乎都“甩”了度娘一巴掌&#xff0c;我才知道115搞活动&#xff0c;由原来500元1年的钻石会员&#xff0c;变成500元3年&#xff0c;算起来每天不到0.5元&#xff0c;确实比度娘实惠了很多&#xff0c;而且活动持续到6月底。自从发…

安装宝塔面板

安装宝塔面板&#xff1a; 1. 宝塔面板网站&#xff1a; https://www.bt.cn/ 2.安装教程 https://www.bt.cn/bbs/thread-1186-1-1.html 3.1 使用远程工具连接执行以下命令 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh &&…

C和指针之字符串编程练习1

1、问题 //编写一个程序,从标准的输入读取一些字符,并统计下各类字符所占的百分比 //控制字符、空白字符、数字、小写字母、大写字母、标点符号、不可打印的字符 2、代码实现 #include <stdio.h> #include <ctype.h>//编写一个程序,从标准的输入读取一些字符,…

【COMA】一种将团队回报拆分为独立回报的多智能体算法

文章目录1. COMA 解决了什么问题&#xff08;Motivation&#xff09;2. COMA 怎么解决独立回报分配问题&#xff08;Method&#xff09;2.1 核心思想 counterfactual baseline 的提出2.2 算法大框架 —— 基于 AC 框架的 CTDE&#xff08;Centralized Training Distributed Exe…

C#解析Markdown文档,实现替换图片链接操作

前言又是好久没写博客了其实也不是没写&#xff0c;是最近在「做一个博客」&#xff0c;从2月21日开始&#xff0c;大概一个多星期的时间&#xff0c;疯狂刷进度&#xff0c;边写代码边写了一整系列的博客开发笔记&#xff0c;目前为止已经写了16篇了&#xff0c;然后上3月之后…

LoadRunner测试下载功能点脚本(方法一)

性能需求&#xff1a;对系统某页面中&#xff0c;点击下载功能做并发测试&#xff0c;以获取在并发下载文件的情况下系统的性能指标。 备注&#xff1a;页面上点击下载时的文件可以是word、excel、pdf等。 问题1&#xff1a;录制完下载的场景后&#xff0c;发现脚本里面并没有包…

海南橡胶机器人成本_「图说」海垦看点:海南橡胶联合北京理工华汇智能科技首创我国林间智能割胶机器人...

1 海垦南繁产业集团长期以来高度重视改善职工居住条件&#xff0c;于去年启动了海燕队保障性住房项目&#xff0c;项目建成后将有效解决职工住房问题。图为近日正在加紧施工的建设工地。 蒙胜国 摄2 海南橡胶联合北京理工华汇智能科技有限公司&#xff0c;研发出来的最新一代林…

C和指针之字符串编程练习10(判断字符串是否是回文数)

1、问题 //如果参数字符串是个回文,函数就返回真,否则返回假。回文就是指一个字符串从左向右和从右向左读是一样的。函数应该忽略所有的非字母字符,而且在进行字符比较时不用区分大小写。 2、代码实现 #include <stdio.h> #include <ctype.h>//如果参数字符串是…

数据挖掘在轨迹信息上的应用实验

文章目录1. 实验概览2. 数据集下载3. 数据预处理3.1 异常点去除3.2 停留点检测与环绕点检测3.3 轨迹分段4. 基于轨迹信息的数据挖掘4.1 路口检测4.1.1 地图分割与轨迹点速度计算4.2 偏好学习通常&#xff0c;我们将一个连续的GPS信号点序列称为一个轨迹&#xff08;Trajectory&…

Python中如何把一个UTC时间转换为本地时间

需求&#xff1a; 将20141126010101格式UTC时间转换为本地时间。 在网上搜了好长时间都没有找到完美的解决方案。有的引用了第三方库&#xff0c;这就需要在现网安装第三方的软件。这个是万万不可的。因为真实环境不一定允许你随便使用root用户安装Python模块。最终找到了一个不…

Avalonia跨平台入门第二十三篇之滚动字幕

在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果、控件的置顶和置底、控件的锁定、自定义Window样式、动画效果、Expander控件、ListBox折叠列表、聊天窗口、ListBox图片消息、窗口抖动、语音发送、语音播放、语音播放问题、玩…

oracle dba 手动创建数据实例

2019独角兽企业重金招聘Python工程师标准>>> 1.手动建库大致步骤 设置环境变量.bash_profile创建目录结构创建参数文件(位置:$ORACLE_HOME/dbs)生成密码文件执行建库脚本创建数据字典其他设置2.DBCA 脚本创建 2.1设置系统环境变量 ORACLE_HOME/app/oracle/11g/11.2.…

解决 ubuntu 14.04.1 下一个sublime text3 3065 中国输入的问题

你看今天 sublime text3 我以前有没有3059 的 它有支持3065该。 因此&#xff0c;为了支持subl 对中国输入法的实现 &#xff0c;下面的操作步骤把我的记录供大家使用 有一个完整的教程&#xff1a; http://www.360doc.com/content/14/0329/08/13087748_364608018.shtml# 可…

C和指针之字符串实现my_strrchr(char *str, int ch)的函数

1、问题 编写一个叫my_strrchr(char *str, int ch)的函数&#xff0c;这个函数类似strchr函数&#xff0c;知识它返回的是一个指向ch字符在&#xff0c;str字符串中最后一次出现(最右边)的位置的指针 2、代码实现 #include <stdio.h> #include <string.h>/** 编写…

asp 强制转换浮点数值_C/C++中浮点数的编码存储

浮点数也称做实型数据(实数)&#xff0c;形式上就是数学中的小数。浮点型数据有两种表达方式&#xff1a; 一种是用数字和小数点表示的&#xff0c;如123.456&#xff1b; 另一种是用指数方式表示&#xff0c;如1.2e-6 或1.2E-6(1.2*10-6)。在计算机中实数是如何存储的呢&#…

PaddleNLP实战——信息抽取(InfoExtraction)

[ 文章目录 ]1. 信息抽取任务是什么&#xff1f;2. 基于PaddleNLP的信息抽取任务2.1 训练任务概览2.2 Predicate列表2.3 SPO列表2.4 代码解析1. 信息抽取任务是什么&#xff1f; 在NLP任务中&#xff0c;通常当我们拿到一段文本时&#xff0c;我们希望机器去理解这段文本描述的…

POJ 3080 Blue Jeans (后缀数组)

题目大意&#xff1a; 求出这些DNA序列中的最长且字典序最小的公共子串。 思路分析&#xff1a; 二分长度的答案&#xff0c;去height中扫描这个长度是否满足&#xff0c;一旦满足就立即输出。这样就能够保证字典序最小了。 #include <cstdio> #include <iostream>…

ThinkPad X220i 刷白名单BIOS,改装第三方无线网卡

ThinkPad X220i自带的网卡是REALTEK RTL8188CE&#xff0c;这张卡在Mac下目前是无解的.国外网站有该卡liunx、unix内核的驱动&#xff0c;但还是没有高人编译出来. 不等了,这卡没戏.正好手边有一台Dell E6400,E6400的无线网卡是DELL Wireless 1397 WLAN Mini-Card,具体型号是&a…

C# 离线人脸识别 ArcSoft

人脸识别&比对发展到今天&#xff0c;已经是一个非常成熟的技术了&#xff0c;而且应用在生活的方方面面&#xff0c;比如手机、车站、天网等。虹软人脸识别服务是免费的。最重要的是它还支持离线识别&#xff0c;并且提供Android、iOS、C、C#版SDK&#xff0c;现在已经升级…

【mongoDB运维篇③】replication set复制集

介绍 replicattion set 多台服务器维护相同的数据副本,提高服务器的可用性,总结下来有以下好处: 数据备份与恢复读写分离MongoDB 复制集的结构以及基本概念 正如上图所示&#xff0c;MongoDB 复制集的架构中&#xff0c;主要分为两部分&#xff1a;主节点&#xff08;Primary&a…