zoukankan      html  css  js  c++  java
  • poj2780Linearity(多点共线)

    链接

    判断最多多少点在一条直线上,

    可以枚举每一个点为坐标系的原点,其它点变成相应的位置,然后求得过原点及其点的斜率,排序找一下最多相同的。

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<vector>
     7 #include<cmath>
     8 #include<queue>
     9 #include<set>
    10 #include<map>
    11 using namespace std;
    12 #define N 1010
    13 #define LL long long
    14 #define INF 0xfffffff
    15 const double eps = 1e-8;
    16 const double pi = acos(-1.0);
    17 const double inf = ~0u>>2;
    18 
    19 struct point
    20 {
    21     int x,y;
    22     point(int x=0,int y=0):x(x),y(y){}
    23 }p[N];
    24 double o[N];
    25 
    26 typedef point pointt;
    27 pointt operator -(point a,point b)
    28 {
    29     return point(a.x-b.x,a.y-b.y);
    30 }
    31 int dcmp(double x)
    32 {
    33     if(fabs(x)<eps) return x;
    34     return x<0?-1:1;
    35 }
    36 
    37 int main()
    38 {
    39     int n,i,j;
    40     while(scanf("%d",&n)!=EOF)
    41     {
    42         for(i = 1; i <= n; i++)
    43         {
    44             scanf("%d%d",&p[i].x,&p[i].y);
    45         }
    46         int maxz=0;
    47         for(i = 1; i <= n; i++)
    48         {
    49             int ans = 0 ,g=0;
    50             for(j = 1; j <= n ;j++)
    51             {
    52                 int x = p[j].x-p[i].x;
    53                 int y = p[j].y-p[i].y;
    54                 if(x==0)
    55                 ans++;
    56                 else o[g++] = y*1.0/x;
    57             }
    58             sort(o,o+g);
    59             int num = 2;
    60             for(j = 1; j < g; j++)
    61             if(dcmp(o[j]-o[j-1])==0)
    62             num++;
    63             else
    64             {ans = max(ans,num);
    65                 num = 2;
    66 
    67             }
    68             ans = max(ans,num);
    69             maxz = max(maxz,ans);
    70         }
    71         printf("%d
    ",maxz);
    72     }
    73     return 0;
    74 }
    View Code
  • 相关阅读:
    JAVA基础——编程练习(二)
    JAVA基础——面向对象三大特性:封装、继承、多态
    JVM内存
    50. Pow(x, n) (JAVA)
    47. Permutations II (JAVA)
    46. Permutations (JAVA)
    45. Jump Game II (JAVA)
    43. Multiply Strings (JAVA)
    42. Trapping Rain Water (JAVA)
    41. First Missing Positive (JAVA)
  • 原文地址:https://www.cnblogs.com/shangyu/p/3875005.html
Copyright © 2011-2022 走看看