UESTC 93 King's Sanctuary 基础

来源:互联网 发布:知乎js游戏引擎 编辑:程序博客网 时间:2024/04/28 23:34

题目大意 

按顺时针方向给定四个点的坐标,要你判断它们所组成的四边形的形状。

解体思路

将四条边以向量的形式保存下来,根据不同形状的不同特点来判断。


#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <vector>#include <cmath>#include <set>#include <map>using namespace std;struct point{    int x,y;};int main(){    int t;    scanf("%d",&t);    for(int cas=1;cas<=t;cas++)    {        point p[5];        for(int i=0;i<4;i++)            scanf("%d%d",&p[i].x,&p[i].y);        //四条边的向量        int ax=(p[1].x-p[0].x);        int ay=(p[1].y-p[0].y);        int bx=(p[1].x-p[2].x);        int by=(p[1].y-p[2].y);        int cx=(p[3].x-p[2].x);        int cy=(p[3].y-p[2].y);        int dx=(p[3].x-p[0].x);        int dy=(p[3].y-p[0].y);        printf("Case #%d: ",cas);        if(bx*dy==by*dx&&ax*cy==ay*cx)//对边平行        {            if(ax*bx+ay*by==0)//邻边90度            {                if(ax*ax+ay*ay==bx*bx+by*by)//邻边相等                printf("Square\n");                else                printf("Rectangle\n");            }            else if(ax*ax+ay*ay==bx*bx+by*by)//邻边相等            {                printf("Diamond\n");            }            else            {                printf("Parallelogram\n");            }        }        else        {            printf("Others\n");        }    }    return 0;}


0 0