为什么不对?
2024-04-06 21:16:53
发布于:浙江
381阅读
0回复
0点赞
大佬求解
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
string s[114];
for(int i = 1;i<=n;i++)cin>>s[i];
for(int i = 1;i<=n;i++){
for(int j = 0;j<m;j++){
if(s[i][j]=='*')cout<<'*';
else {
int sum = 0;
if(s[i-1][j]/*上*/=='*')sum++;
if(s[i+1][j]/*下*/=='*')sum++;
if(s[i][j-1]/*左*/=='*')sum++;
if(s[i][j+1]/*右*/=='*')sum++;
if(s[i-1][j-1]/*左上*/=='*')sum++;
if(s[i+1][j-1]/*左下*/=='*')sum++;
if(s[i-1][j+1]/*右上*/=='*')sum++;
if(s[i+1][j+1]/*右下*/=='*')sum++;
cout<<sum;
}
}
cout<<"\n";
}
return 0;
}
全部评论 5
《114》
2024-04-08 来自 浙江
2不行吗
2024-04-08 来自 浙江
0
qwq
6天前 来自 浙江
0n, m = map(int, input().split())
grid = [list(input().strip()) for _ in range(n)]8 个方向
dirs = [
(-1, -1), (-1, 0), (-1, 1),
(0, -1), (0, 1),
(1, -1), (1, 0), (1, 1)
]for i in range(n):
for j in range(m):
if grid[i][j] == '':
continue
cnt = 0
for dx, dy in dirs:
ni, nj = i + dx, j + dy
if 0 <= ni < n and 0 <= nj < m:
if grid[ni][nj] == '':
cnt += 1
grid[i][j] = str(cnt)输出
for row in grid:
print(''.join(row))2026-01-15 来自 广东
0发我去微软推哦怕立刻脚后跟范德萨自行车v吧
2025-03-16 来自 上海
0需要处理边界情况,可以在访问某个格子的周围格子时,先判断该格子是否在边界内,然后再进行访问
2024-04-07 来自 浙江
0加了,错了更多了😓
2024-04-07 来自 浙江
0就是边界问题,j-1的时候索引为负数,就会出问题。
2024-04-07 来自
0同时,i-1的时候因为是空字符串,也会索引超出。
2024-04-07 来自
0









有帮助,赞一个