请教下面图片中的这个内容该怎么做呢,我能该如何去解决这种问题呢?
/**
* struct Point {
* int x;
* int y;
* };
*/
class Solution {
public:
float calculate_gradient(struct Point &point_x ,struct Point &point_y)
{
if(point_x.x-point_y.x != 0)
return (float)(point_x.y-point_y.y)/(float)(point_x.x-point_y.x);
else
return 1000.f;
}
/**
*
* @param points Point类vector
* @return int整型
*/
int maxPoints(vector<Point>& points) {
int max_points=0;
int temp_max_points=0;
float gradient=0.f;
if(points.size() == 0)
return 0;
if(points.size()==1)
return 1;
for(int i=0;i<points.size();++i)
{
for(int j=i+1;j<points.size();++j)
{
temp_max_points=2;
gradient = calculate_gradient(points.at(i) ,points.at(j));
for(int k=0;k<points.size();++k)
{
if(k==i || k==j) continue;
if( (0 == memcmp(&points.at(k),&points.at(i),sizeof(struct Point))) ||
(0 == memcmp(&points.at(k),&points.at(j),sizeof(struct Point))))
{
++temp_max_points;
continue;
}
if(gradient == 1000.f)
{
if(points.at(i).x-points.at(k).x == 0)
++temp_max_points;
}else{
if((points.at(i).x-points.at(k).x)!=0 && gradient == calculate_gradient(points.at(i) ,points.at(k)))
++temp_max_points;
}
}
if(temp_max_points>max_points)
max_points = temp_max_points;
}
}
return max_points;
}
};