在一个100*100的网格中有随机0-100的数字,如何找出阈值为90的网格的范围C++代码实现
时间: 2024-03-28 21:41:32 浏览: 62
以下是一个简单的C++代码实现,用于找出阈值为90的网格的范围:
```c++
#include <iostream>
#include <queue>
using namespace std;
const int N = 100;
int a[N][N]; // 存储网格中的数字
int b[N][N]; // 存储符合条件的位置
// 定义一个结构体用于表示网格中的一个位置
struct Position {
int x;
int y;
Position(int x, int y) : x(x), y(y) {}
};
// 判断一个位置是否在网格中
bool isValid(int x, int y) {
return (x >= 0 && x < N && y >= 0 && y < N);
}
// 广度优先搜索算法
void bfs(int x, int y) {
queue<Position> q;
q.push(Position(x, y));
while (!q.empty()) {
Position p = q.front();
q.pop();
int x = p.x, y = p.y;
if (a[x][y] >= 90 && !b[x][y]) {
b[x][y] = 1;
if (isValid(x - 1, y)) q.push(Position(x - 1, y));
if (isValid(x + 1, y)) q.push(Position(x + 1, y));
if (isValid(x, y - 1)) q.push(Position(x, y - 1));
if (isValid(x, y + 1)) q.push(Position(x, y + 1));
}
}
}
int main() {
// 初始化网格中的数字
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
a[i][j] = rand() % 101;
}
}
// 找出符合条件的位置
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (a[i][j] >= 90 && !b[i][j]) {
bfs(i, j);
}
}
}
// 输出符合条件的位置
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (b[i][j]) {
cout << "(" << i << ", " << j << ")" << endl;
}
}
}
return 0;
}
```
该代码首先通过 `rand()` 函数生成一个随机的100*100网格,然后使用广度优先搜索算法找出符合条件的位置,并将其存储在 `b` 数组中。最后,输出符合条件的位置。
阅读全文