当前位置: 代码迷 >> 综合 >> 85. Three Points On A Line
  详细解决方案

85. Three Points On A Line

热度:0   发布时间:2024-01-14 21:32:52.0

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");elseprintf("No\n");}
}

 

  相关解决方案