题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2606 题意简述:给定一系列点,求在一条直线上的最多点。 解题思路:乱搞,直接O(n^3)也能过。 代码: #include<stdio.h> #include<iostream> using namespace std; struct po{ float x,y; }P[205]; int main() { int n; while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) scanf("%f%f",&P[i].x,&P[i].y); int ans=0; for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) { int temp=2; for(int k=1;k<=n;k++) if(k!=i&&k!=j&&(P[i].y-P[j].y)*(P[k].x-P[j].x)==(P[k].y-P[j].y)*(P[i].x-P[j].x)) temp++; if(ans<temp) ans=temp; } printf("%d/n",ans); } return 0; }