为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?为什么错了?#include <bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; char a[102][102]; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } int cnt=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]==''){ cout<<""; }else{ if(a[i-1][j]=='')cnt++; if(a[i+1][j]=='')cnt++; if (a[i][j+1]=='')cnt++; if(a[i][j-1]=='')cnt++; if(a[i-1][j+1]=='')cnt++; if(a[i+1][j+1]=='')cnt++; if(a[i+1][j-1]=='')cnt++; if(a[i-1][j+1]=='')cnt++; if(a[i-1][j-1]=='*')cnt++; cout<<cnt; cnt = 0; } } cout<<endl; } return 0; }
共 1 条回复
整个代码思路清晰,逻辑也没问题,就是语法这块有点问题;
在最后判断地雷数的时候你用了
else-if
嵌套分支来判断,如果上面和下面同时有一颗地雷,else-if
只会判断最前面的分支,当前面的分支成立时后面的分支不会判断,所以导致错误。为了避免这个问题,我们可以使用多个if来判断。