给你 n 个点,用数组 points 表示, points[i] = [x, y], 表示第 i 个点的坐标。 给你 m 个圆,用数组 queries 表示, queries[j] = [x, y, r] ,表示圆心在 x, y 半径为 r 的圆。 请输出一个数组 ans ,每个 ans[i] ,都表示有 ans[i] 个点在圆 queries[i] 内 用一个c++程序实现
时间: 2024-02-22 22:58:41 浏览: 28
c ++实现的 RANSAC算法从给定的点中找到 n 个最佳拟合圆_C++_代码_下载
5星 · 资源好评率100%
以下是使用 C++ 实现的代码:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<vector<int>> points(n, vector<int>(2));
for (int i = 0; i < n; i++) {
cin >> points[i][0] >> points[i][1];
}
vector<vector<int>> queries(m, vector<int>(3));
for (int i = 0; i < m; i++) {
cin >> queries[i][0] >> queries[i][1] >> queries[i][2];
}
vector<int> ans(m);
for (int i = 0; i < m; i++) {
int cnt = 0;
int cx = queries[i][0], cy = queries[i][1], r = queries[i][2];
for (int j = 0; j < n; j++) {
int px = points[j][0], py = points[j][1];
if (sqrt(pow(cx - px, 2) + pow(cy - py, 2)) <= r) {
cnt++;
}
}
ans[i] = cnt;
}
for (int i = 0; i < m; i++) {
cout << ans[i] << " ";
}
return 0;
}
```
代码的基本思路是,先读入 n 个点和 m 个圆,然后对每个圆依次遍历所有点,如果点在圆内,就增加计数器的值。最后将计数器的值存入答案数组 ans 中,并输出 ans 数组。
阅读全文