关于多点共线问题

Posted doulcl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于多点共线问题相关的知识,希望对你有一定的参考价值。

想了想这个问题,自己写了写,之前百度了个答案,思想基本类似

#include <vector>
#include <map>

 class point
 {
 public:
     point(int x0,int x1):x(x0),y(x1){};
     ~point(){};
     int getX() const {return x;}
     int getY() const {return y;}
 private:
     int x;
     int y;
 };
 int getMaxOnline(vector<point>& input)
 {
     map<int,int> map1;
     static int key = 0;
     int max = 0;
     for(int i =0;i<input.size();++i)
     {
         for(int k =0;k<input.size();++k)
         {
             if(i != k)
             {
                 key ++;
                 int x0 = input[i].getX() - input[k].getX();
                 int y0 = input[i].getY() - input[k].getY();
                  for(int j =0;j<input.size();++j)
                  {
                     if(j != k && j != i )
                     {
                         int x1 =  input[j].getX() - input[k].getX();
                         int y1 =  input[j].getY() - input[k].getY();
                         if(x0*y1 - y0*x1 == 0)
                         {
                             map1[key]++;
                         }
                     }
                  }
             }
         }
     }
     map<int,int>::iterator it;
     for(it = map1.begin();it != map1.end();++it)
     {
         if(it->second >= max)
         {
             max = it->second;
         }
     }
     return max+2;
 }

 void main()

 {
    int x,y;
    vector<point> vec;
    for(int i = 0;i < 5 ;++i)
    {
        cin >>x>>y;
        point a(x,y);
        vec.push_back(a);
    }
    int max = getMaxOnline(vec);
    cout<<"max online is "<<max <<endl;
    system("pause");
 }

技术图片

 

以上是关于关于多点共线问题的主要内容,如果未能解决你的问题,请参考以下文章

立体集合中,如何证三点共线(高二)

DLT698.45协议

两点共线怎么证明 几种方法

多点连接范围和非 ios 设备

关于ArcGIS地图服务的Point clustering(多点聚类显示)

在 iphone 中使用 UITouch/UIView 的多点触控问题