1 条题解
-
0
C++ :
#include <bits/stdc++.h> using namespace std; //求两点的距离的平方 double distance(int x1,int y1,int x2,int y2){ return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); } //判断4个点能否构成正方形(两个点是对角线的话如:abcd四点, //两点之间的距离的平方如:ac == ab的平方和) //注意:不能有两个点是同一个点(距离为0) bool square(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4){ bool r = false; //如果有两个点一样是不可以的(主要是x4,y4不能和前3个点有重复的) if(distance(x1,y1,x4,y4) == 0 || distance(x2,y2,x4,y4) == 0 || distance(x3,y3,x4,y4) == 0 ){ r = false; } else{ //假设1 2是对角线(且2到3和到4距离要相等) if(distance(x1,y1,x2,y2) == distance(x1,y1,x4,y4) + distance(x2,y2,x4,y4) && distance(x2,y2,x3,y3) == distance(x2,y2,x4,y4) && distance(x1,y1,x3,y3) == distance(x1,y1,x4,y4)) { r = true; //1 3是对角线 } else if(distance(x1,y1,x3,y3) == distance(x3,y3,x4,y4) + distance(x1,y1,x4,y4) && distance(x3,y3,x2,y2) == distance(x3,y3,x4,y4) && distance(x1,y1,x2,y2) == distance(x1,y1,x4,y4)) { r = true; //1 4是对角线 } else if(distance(x1,y1,x4,y4) == distance(x1,y1,x2,y2) + distance(x2,y2,x4,y4) && distance(x1,y1,x4,y4) == distance(x1,y1,x3,y3) + distance(x3,y3,x4,y4) && distance(x4,y4,x2,y2) == distance(x4,y4,x3,y3)) { r = true; } } return r; } int main(){ int x1,y1,x2,y2,x3,y3; int i,j; cin>>x1>>y1>>x2>>y2>>x3>>y3; bool f = false; for(i = 1;i <= 19;i++){ for(j = 1;j <= 19;j++){ //注意:i j不能是已有的点 if(square(x1,y1,x2,y2,x3,y3,i,j) == true){ cout<<i<<" "<<j<<endl; f = true; break; } } if(f == true){ break; } } return 0; }
- 1
信息
- ID
- 2451
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者