【接近直角三角形的三角形】CodeForce 18A ——Triangle
2013-01-22 11:31
316 查看
题目来源:
这个题是个暴搜,要求先判断是不是直角三角形,然后再判断是否是接近直角三角形的三角形,方法是各边坐标加一或减一,如果能够凑成直角三角形,那么就是近似直角的三角形。输入输出也挺顺,记住用勾股定理进行判断。本来还担心卡精度的,但是pow一下子就过了,看来可能是我想多了。
其实ACM中适当用用GOTO也是可以的。。。。= =:
这个题是个暴搜,要求先判断是不是直角三角形,然后再判断是否是接近直角三角形的三角形,方法是各边坐标加一或减一,如果能够凑成直角三角形,那么就是近似直角的三角形。输入输出也挺顺,记住用勾股定理进行判断。本来还担心卡精度的,但是pow一下子就过了,看来可能是我想多了。
其实ACM中适当用用GOTO也是可以的。。。。= =:
#include <iostream> #include <cmath> using namespace std; class point { public: int x; int y; }; point p[3]; bool isrighttr() { int a,b,c; a=pow((p[0].x-p[1].x),2.0)+pow((p[0].y-p[1].y),2.0); b=pow((p[1].x-p[2].x),2.0)+pow((p[1].y-p[2].y),2.0); c=pow((p[2].x-p[0].x),2.0)+pow((p[2].y-p[0].y),2.0); if(a==0||b==0||c==0) return false; if(a+b==c||a+c==b||b+c==a) return true; else return false; } int main() { for(int i=0;i<3;i++) cin>>p[i].x>>p[i].y; if(isrighttr()) { cout<<"RIGHT"<<endl; goto over; } else { int pos=0; for(int i=0;i<3;i++)//暴搜 { for(int j=-1;j<2;j++) { p[i].x+=j; if(isrighttr()) pos=1; p[i].x-=j;//复原 p[i].y+=j; if(isrighttr()) pos=1; p[i].y-=j; } } if(pos==1) { cout<<"ALMOST"<<endl; goto over; } else { cout<<"NEITHER"<<endl; } } over: return 0; }
相关文章推荐
- lintcode triangle 数字三角形
- code force 833B The Bakery
- codeforce499C - Crazy Town
- codeforce Gym 100500F Door Lock (二分)
- codeforce 551C GukiZ hates Boxes(二分+贪心)
- codechef Sums in a Triangle题解
- codeforce 766D Mahmoud and a Dictionary 带权并查集
- codeforce 895B XK Segments (结论)
- codeforce 5B Center Alignment
- 【OpenGL】理解GL_TRIANGLE_STRIP等绘制三角形序列的三种方式
- codeforce 789 C Functions again (dp)
- Codeforces Round #313 (Div. 2) C. Geralds Hexagon (六边形最多划分多少个正三角形)
- codeforce 149D Coloring Brackets 区间DP
- Codeforce E. Lucky Queries 线段树实践
- codeforce Gym 100203I I WIN (网络流)
- Codeforce 729B. Spotlights
- Codeforce round# 380 E(贪心,构造)
- codeforce_Diplomas and Certificates_水
- LeetCode-118-Pascal's Triangle(帕斯卡的三角形)
- codeforce 626E(二分)