思路:判断是否存在三个点在同一条直线上,直接用斜率就可以了
#include<iostream>
#include<cstdio>
using namespace std;
double x[105];
double y[105];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i = 1;i<=n;i++)
scanf("%lf%lf",&x[i],&y[i]);
int flag = 0;
for(int i = 1;i<=n&&!flag ;i++)
for(int j = i+1;j<=n&&!flag;j++)
for(int k = j+1;k<=n&&!flag;k++)
if((y[k]-y[i])/(x[k]-x[i]) == (y[j]-y[i])/(x[j]-x[i]))
flag=1;
printf("%s\n",flag?"Yes":"No");
}
}
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 T(1≤T≤10) appears in the first line of input.
Each test case begins with the number of points N(1≤N≤100) . The following N lines describe the coordinates (xi,yi) of each point, in accuracy of at most 3 decimals. Coordinates are ranged in [−104,104] .
输出格式
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