全部评论 4

  • char a[n][m]是在编译时执行
    cin>>n>>m是在运行时执行
    所以n和m在编译时是随机的

    2024-08-17 来自 广东

    0
  • 我的代码跟你差不多可以参考

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        int n,m;
        char a[105][105];
        cin >> n >> m;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin >> a[i][j];
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                int sum=0;
                if(a[i][j]=='?'){
                    if(a[i+1][j]=='*'){
                        sum++;
                    }
                    if(a[i+1][j-1]=='*'){
                        sum++;
                    }
                    if(a[i+1][j+1]=='*'){
                        sum++;
                    }
                    if(a[i-1][j]=='*'){
                        sum++;
                    }
                    if(a[i-1][j+1]=='*'){
                        sum++;
                    }
                    if(a[i-1][j-1]=='*'){
                        sum++;
                    }
                    if(a[i][j+1]=='*'){
                        sum++;
                    }
                    if(a[i][j-1]=='*'){
                        sum++;
                    }
                    cout << sum;
                }else{
                    cout << a[i][j];
                }
            }
            cout << endl;
        }
    	return 0;
    }
    

    2024-08-09 来自 广东

    0
  • int dls(int c,int d){
    	int sum=0,x,y,c1=c-1,d1=d-1;
    	if(c1<0) c1=0;
    	if(d1<0) d1=0;
    	for(x=c1;x<=c+1&&x<n;x++){
    		for(y=d1;y<=d+1&&y<m;y++){
    			if(a[x][y]=='*'){
    				sum++;
    			}
    		}
    	}
    	return sum;
    }
    

    用for不香吗

    2024-07-19 来自 浙江

    0
  • 1.不要使用char a[n][m],请使用char a[105][105],b也是
    2.cin>>a[i][m]应为cin>>a[i][j]
    3.边上的'?'您不管了吗?
    4.建议使用&&而非and
    5.建议把a,b定义在全局并将数组的下标从1开始使用,可以少判很多特殊情况

    2024-06-08 来自 上海

    0

热门讨论