雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

判断一个四边形是否是矩形——面试题

Posted on 2013-10-18 22:06  huhuuu  阅读(1049)  评论(0编辑  收藏  举报

  比较方便的做法是对每个顶点做一次勾股定理,如果满足每个角都是直角,就是矩形

  如果把问题改成判断四个点是否组成正方形的话,就另外判断相邻的边是否相等,若是,则为正方形

  供练习传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1524

  

#include<stdio.h>
#include<math.h>
#include<iostream>
#include<algorithm>
using namespace std;

double x[9],y[9];
double len[9];

double Dis(double x,double y,double x2,double y2){
    return (x-x2)*(x-x2)+(y-y2)*(y-y2);
}

int main()
{
    int t,i,T=0;
    scanf("%d",&t);
    while(t--){
        T++;printf("Case %d:\n",T);
        int i,j;
        for(i=1;i<=4;i++){
            scanf("%lf%lf",&x[i],&y[i]);
        }

        int ok=0;
        for(i=1;i<=4;i++){
            int add=0;
            for(j=1;j<=4;j++){
                if(i==j)continue;
                add++;
                len[add]=Dis(x[i],y[i],x[j],y[j]);
            }
            sort(&len[1],&len[4]);
            if((len[3])==(len[1]+len[2]))ok++;
        }
        if(ok==4)printf("Yes\n");
        else printf("No\n");
        if(t!=0)printf("\n");
    }
    return 0;
}
View Code