本文主要是介绍北邮机试 | bupt oj | Three Points On A Line,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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
AC代码
#include <stdio.h>
float x[110],y[110];
int main(){int t,n;scanf("%d",&t);while(t--){int flag = 0;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%f %f",&x[i],&y[i]);}for(int i=0;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;}}}if(flag){printf("Yes\n");}else{printf("No\n");}}return 0;
}
这篇关于北邮机试 | bupt oj | Three Points On A Line的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!