今天,pasher打算在一个浪漫的花园和他的搭档们聚餐,但是不幸的是,pasher忘记了花园的地点,他只记得这个花园看上去像个平行于坐标轴的正方形,他还记得花园的每个顶点上都有一棵大数。现在,pasher知道其中两棵树的坐标,且这两棵树在对角线上,你能帮他找出另外两棵树的坐标吗?
0 0 1 1
0 1 1 0
代码如下:
#include <iostream> #include <cmath> using namespace std; int main() { int x1,y1,x2,y2; int x3,y3,x4,y4; while (cin>>x1>>y1>>x2>>y2) { if (fabs(x1-x2)==fabs(y1-y2)&&(x1!=x2)&&(y1!=y2)) { if (x1<x2) { x3=x1; x4=x2; y3=y2; y4=y1; } else { x3=x2; x4=x1; y3=y1; y4=y2; } cout<<x3<<" "<<y3<<" "<<x4<<" "<<y4<<endl; } else cout<<"-1"<<endl; } return 0; }
运行结果:
学习心得:
题目的确很简单。我却想复杂了,担心如果对角线的横或者纵坐标一致的时候(即正方形在空间直角坐标系呈菱形的时候)怎么办,好在找到了求另外两点的方法,这里就不分享了。。。今天抱着试一下的态度先来个简单的,就当它的边平行于坐标轴(题目上有提到,但是我不确定)来先测试一下,结果果然是这样,,,我这总是把问题想复杂的脑袋里面得好好整理整理了,平时涉猎的太多,但是又不精通,,,以至于经常产生这种情况。。。
原文地址:http://blog.csdn.net/liuchang54/article/details/44958355