思路:
因为花园的形状是正方形,所以分四种情况讨论( Y 代表当前坐标上有树, N 代表没有)。
1:两个横坐标相等( $x_1=x_2$ ):
| Y | Y |
|---|---|
| N | N |
或者:
| N | N |
|---|---|
| Y | Y |
2:两个纵坐标相等( $y_1=y_2$ ):
| Y | N |
|---|---|
| Y | N |
或者:
| N | Y |
|---|---|
| N | Y |
3:对角线( $|x_1-x_2|=|y_1-y_2|$ ):
| Y | N |
|---|---|
| N | Y |
或者:
| N | Y |
|---|---|
| Y | N |
4:以上情况都不是,输出“ $-1$ ”
理完了思路,就来看代码吧!
AC CODE:
#include<bits/stdc++.h>
using namespace std;
int main(){
int x[3],y[3];//定义
cin>>x[1]>>y[1]>>x[2]>>y[2];//输入
if(x[1]==x[2])cout<<x[1]+abs(y[1]-y[2])<<" "<<y[1]<<" "<<x[2]+abs(y[1]-y[2])<<" "<<y[2]<<endl;//第一种情况(横坐标相等)
else if(y[1]==y[2])cout<<x[1]<<" "<<y[1]+abs(x[1]-x[2])<<" "<<x[2]<<" "<<y[2]+abs(x[1]-x[2])<<endl;//第二种情况(纵坐标相等)
else if(abs(x[1]-x[2])==abs(y[1]-y[2])) cout<<x[1]<<" "<<y[2]<<" "<<x[2]<<" "<<y[1]<<endl;//第三种情况(对角线)
else cout<<"-1"<<endl;//第四种情况(啥都不是)
return 0;//完美结束
}