1 solutions
-
0
三点共线
#include<bits/stdc++.h> using namespace std; struct point{ int x,y; }; int main(){ int n; cin>>n; if(n==1){ cout << "1"; return 0; } point p[n]; for (int i=0;i<n;i++){ cin>>p[i].x>>p[i].y; } int max=0; for (int i=0;i<n-1;i++){ for (int j=i+1;j<n;j++){//任取两点i,j,记为I、J int cnt=2;//IJ上本就有I、J两点 point vec1;//用点坐标代替向量IJ vec1.x=p[j].x-p[i].x; vec1.y=p[j].y-p[i].y;//IJ=(xj-xi,yj-yi) for (int h=0;h<n;h++){//枚举异于i、j的所有点 if (h==i || h==j) continue; point vec2;//同样的方法计算向量IH vec2.x=p[h].x-p[i].x; vec2.y=p[h].y-p[i].y; if (vec1.x*vec2.y==vec1.y*vec2.x){//如果IJ与IH共线,即I、J、H三点共线 cnt++;//直线IJ上的点+1 } } if (cnt>max) max=cnt; } } cout<<max; return 0; }
- 1
Information
- ID
- 7030
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 3
- Tags
- # Submissions
- 33
- Accepted
- 10
- Uploaded By