就一道算法题,给定一个圆(半径+坐标)和一个矩形(左下右上角坐标),判断两者是否相交:
#include <bits/stdc++.h>
using namespace std;
int main()
{
{
double radius, x_center, y_center, x1, y1, x2, y2;
scanf("%f %f %f %f %f %f %f", &radius, &x_center, &y_center, &x1, &y2, &x2, &y2);
vector<double> vec1 = { abs(x_center - (x1 + x2) / 2), abs(y_center - (y1 + y2) / 2) };
vector<double> vec2 = { x2 - (x1 + x2) / 2, y2 - (y1 + y2) / 2 };
vector<double> vec3 = { max(0., vec1[0] - vec2[0]), max(0., vec1[1] - vec2[1]) };
string res = vec3[0] * vec3[0] + vec3[1] * vec3[1] <= radius * radius ? "True" : "False";
cout << res << endl;
}
scanf("%f %f %f %f %f %f %f", &radius, &x_center, &y_center, &x1, &y2, &x2, &y2);
vector<double> vec1 = { abs(x_center - (x1 + x2) / 2), abs(y_center - (y1 + y2) / 2) };
vector<double> vec2 = { x2 - (x1 + x2) / 2, y2 - (y1 + y2) / 2 };
vector<double> vec3 = { max(0., vec1[0] - vec2[0]), max(0., vec1[1] - vec2[1]) };
string res = vec3[0] * vec3[0] + vec3[1] * vec3[1] <= radius * radius ? "True" : "False";
cout << res << endl;
}
只能过91%,不知道为啥,换了精度还是不行。
全部评论
(0) 回帖