二维数组 + 循环语句
2023-08-15 21:19:21
发布于:上海
7阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e2 + 5;
int n, mx, g[MAXN][MAXN], f[9][2] {0, 0, -1, 0, -1, -1, -1, 1, 1, -1, 1, 0, 1, 1, 0, -1, 0, 1}; // f 方向数组
int boom[MAXN][MAXN]; // 这个数组记录每个位置的炸弹值
int main() {
cin >> n;
// fill(数组开始地址,数组结束地址,初始值); 所在头文件 <algorithm>
fill(&g[0][0], &g[0][0] + MAXN * MAXN, 1); // 将 g 二维数组全部初始化为 1
for (int i = 1; i <= n; i++) { // 输入
for (int j = 1; j <= n; j++) {
cin >> g[i][j];
}
}
for (int i = 1; i <= n; i++) { // 每个位置都去判断
for (int j = 1; j <= n; j++) {
int nx, ny, sum = 1; // 累乘 sum = 1
for (int k = 0; k < 9; k++) { // 9 个方向
nx = i + f[k][0], ny = j + f[k][1];
sum *= g[nx][ny];
}
boom[i][j] = sum;
mx = max(mx, sum); // 取最大值
}
}
for (int i = 1; i <= n; i++) { // 根据最大值输出答案
for (int j = 1; j <= n; j++) {
if (boom[i][j] == mx) cout << i << " " << j << "\n";
}
}
return 0;
}
这里空空如也
有帮助,赞一个