85. Three Points On A Line

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SDUTyangkun/article/details/88608913

85. Three Points On A Line
时间限制 1000 ms 内存限制 65536 KB
题目描述
Given points on a 2D plane, judge whether there're three points that locate on the same line.

输入格式
The number of test cases  appears in the first line of input.

Each test case begins with the number of points . The following  lines describe the coordinates  of each point, in accuracy of at most 3 decimals. Coordinates are ranged in .

输出格式
For each test case, output Yes if there're three points located on the same line, otherwise output No.

输入样例
2
3
0.0 0.0
1.0 1.0
2.0 2.0
3
0.001 -2.000
3.333 4.444
1.010 2.528
输出样例
Yes
No

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
struct node
{
    double x;
    double y;
}s[110];
int judge(node a, node b, node c)
{
   if((a.y - b.y)/(a.x - b.x) == (c.y - a.y)/(c.x - a.x))
        return 1;
    return 0;
}
int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
    {
        int n;
        scanf("%d", &n);
        for(int i = 0; i < n; i++)
        {
            scanf("%lf%lf", &s[i].x,&s[i].y);
        }
        int flag = 0;
        for(int i = 0; i < n; i++)
        {
            for(int j = i+1; j < n; j++)
            {
                for(int k = j+1; k < n; k++)
                {
                    if(flag)
                        break;
                    flag = judge(s[i],s[j],s[k]);
                    
                }
            }
        }
        if(flag)
            printf("Yes\n");
        else
            printf("No\n");
    }
}

猜你喜欢

转载自blog.csdn.net/SDUTyangkun/article/details/88608913