北邮OJ 85. Three Points On A Line

关于证明三点共线的方法

方法一:取两点确立一条直线,计算该直线的解析式 .代入第三点坐标 看是否满足该解析式 (直线与方程). 
方法二:设三点为A、B、C .利用向量证明:λAB=AC(其中λ为非零实数). 
方法三:利用点差法求出AB斜率和AC斜率,相等即三点共线. 
方法四:用梅涅劳斯定理. 
方法五:利用几何中的公理“如果两个不重合的平面有一个公共点,那么它们有且只有一条过该点的公共直线”.可知:如果三点同属于两个相交的平面则三点共线. 
方法六:运用公(定)理 “过直线外一点有且只有一条直线与已知直线平行(垂直)”.其实就是同一法. 
方法七:证明其夹角为180°. 
方法八:设A B C ,证明△ABC面积为0. 
方法九:帕普斯定理. 
方法十:利用坐标证明。即证明x1y2=x2y1. 
方法十一:位似图形性质.

 
显然用斜率方法
//三点共线 
#include <stdio.h>

int main()
{
    int T,N,i,j,k;
    double x[101],y[101];
    scanf("%d",&T);
    while(T--)
    {
        int count = 0;
        scanf("%d",&N);
        for(i = 0;i < N;i++)
           scanf("%lf %lf",x + i,y + i);
        for(i = 0;i < N && !count;i++)
            for(j = i + 1;j <N && !count;j++)
               for(k = j + 1;k <N && !count;k++)
               {
                   if((y[k]-y[i])/(x[k]-x[i]) == (y[j]-y[i])/(x[j]-x[i]))
                      count = 1;
               }
        if(count)
           printf("Yes
");
        else
           printf("No
");
    }
    return 0;
}
 
 
 
原文地址:https://www.cnblogs.com/lipching/p/6406332.html