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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值