读书人

NEFU要突起第16场 A - Triangle

发布时间: 2013-01-26 13:47:03 作者: rapoo

NEFU要崛起——第16场 A - Triangle

一个给定三角形的3个坐标,判断是否是直角三角形,并且如果某一个点移动一位后,能组成直角三角形,则输出ALMOST

注意一点就是我根据勾股定理判断的直角三角形,但是,如果三点在同一点上,同样满足A+B=C,但不是三角形,所以要给出判断


#include <iostream>using namespace std;int x[3],y[3];int f(int a){return a*a;}bool right(){int a,b,c;a=f(x[0]-x[1])+f(y[0]-y[1]);b=f(x[1]-x[2])+f(y[1]-y[2]);c=f(x[2]-x[0])+f(y[2]-y[0]);    if(a==0||b==0||c==0)//如果三点在同一点上     return false;     if(a+b==c||a+c==b||b+c==a) return true; else return 0;}int main(){for(int i=0;i<3;i++)cin>>x[i]>>y[i];if(right()){cout<<"RIGHT"<<endl;return 0;}else{int cc=0;for(int i=0;i<3;i++){for(int j=-1;j<2;j++){x[i]+=j;if(right())cc=1;x[i]-=j;y[i]+=j;if(right())cc=1;y[i]-=j;}}if(cc==1){cout<<"ALMOST"<<endl;return 0;}}cout<<"NEITHER"<<endl;return 0;}



读书人网 >编程

热点推荐