zoukankan      html  css  js  c++  java
  • 不平行的直线

     

    题目描述

    在坐标纸上有N个不重合的点,两两可以连一个线段并延伸成直线,请问在这些直线里最多能选出多少条使得他们两两不平行也不重合。

    输入描述:

    第1行: 输入1个正整数:N

    第2..N+1行:第i+1行是两个用空格隔开的整数,为点i的坐标(Xi,Yi)

    输出描述:

    输出1个整数,为最多的互不平行的直线数目。
    示例1

    输入

    复制
    3
    1 0
    -2 0
    0 0

    输出

    复制
    1

    备注:

    N200,1000Xi,Yi1000

    思路:枚举出所有的斜率,用set去重,注意用double类型

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<set>
    using namespace std;
    #define INF 0x3f3f3f3f
    const int maxn=1e6;
    double marr[maxn];
    struct point
    {
        double x;
        double y;
    }arr[205];
    
    double gradient(double x,double y,double w,double v)
    {
        double ans;
        if(x==w)
        {
            ans=INF;
        }
        else
            ans=(y-v)/(x-w);
        return ans;
    }
    
    int main()
    {
        int n; cin>>n;
        int i,j,k=0;
        for(i=0;i<n;i++)
            cin>>arr[i].x>>arr[i].y;
        for(i=0,j=1;i<=j&&j<n;)
        {
            marr[k++]=gradient(arr[i].x,arr[i].y,arr[j].x,arr[j].y);
            if(j==n-1)
            {
                i++;j=i+1;
            }else j++;
        }
        set<double>s(marr,marr+k);
        cout<<s.size()<<endl;
        return 0;
    }
  • 相关阅读:
    openstack-1基础环境准备
    ELK补充之Filebeat
    ELK补充之logstash
    ELK
    dubbo
    zokeeper+kafka
    rabbitmq
    jenkins补充-编写自动化脚本实现devops 流水线和回滚等操作
    sonar
    python连接数据库之(连接MySQL)
  • 原文地址:https://www.cnblogs.com/adventurer-/p/12977464.html
Copyright © 2011-2022 走看看