4 solutions

  • 5
    @ 2025-9-14 11:39:18

    哇!!!

  • 0
    @ 2026-8-17 20:49:43
    #include<bits/stdc++.h>
    using namespace std;
    int dx[]={-1,-1,-1,0,1,1,1,0};
    int dy[]={-1,0,1,1,1,0,-1,-1};
    int n,m;char a[105][105];
    char c[105][105];
    int main()
    {
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>a[i][j];
    			c[i][j]=a[i][j];
    		}
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			int cnt=0;
    			if(a[i][j]=='?'){
    				for(int r=0;r<8;r++){
    					if(a[i+dx[r]][j+dy[r]]=='*'){
    						cnt++;
    					}
    				}
    				c[i][j]=cnt+'0';
    			}
    		}
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cout<<c[i][j];
    			
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    
    • 0
      @ 2025-6-8 11:27:37
      #include<bits/stdc++.h>
      using namespace std;
      int dx[]={-1,-1,-1,0,0,1,1,1};
      int dy[]={-1,0,1,-1,1,-1,0,1};
      //相邻的方向
      const int N=110;
      char g[N][N];
      int main()
      {
          int n,m;
          cin>>n>>m;
          for(int i=1;i<=n;i++) //获取地图
          {
              for(int j=1;j<=m;j++)
              {
                  cin>>g[i][j];
              }
          }
          for(int i=1;i<=n;i++)
          {
              for(int j=1;j<=m;j++)
              {
                  int cnt=0; //地雷个数
                  if(g[i][j]=='*') cout<<"*"; //地雷
                  else  //枚举周围的点,计算地雷个数
                  {
                      for(int k=0;k<8;k++)
                      {
                          int a=i+dx[k],b=j+dy[k];
                          if(g[a][b]=='*') cnt++;
                      }
                      cout<<cnt;
                  }
              }
              cout<<endl;
          }
          return 0;
      }
      
      
    • -1
      @ 2026-7-27 9:25:12
      #include<bits/stdc++.h>
      using namespace std;
      int dx[]={-1,-1,-1,0,0,1,1,1};
      int dy[]={-1,0,1,-1,1,-1,0,1};
      
      const int N=110;
      char g[N][N];
      int main()
      {
      	int n,m;
      	cin>>n>>m;
      	for(int i=1;i<=n;i++) 
      	{
      		for(int j=1;j<=m;j++)
      		{
      			cin>>g[i][j];
      		}
      	}
      	for(int i=1;i<=n;i++)
      	{
      		for(int j=1;j<=m;j++)
      		{
      			int cnt=0; 
      			if(g[i][j]=='*') cout<<"*"; 
      			else  
      			{
      				for(int k=0;k<8;k++)
      				{
      					int a=i+dx[k],b=j+dy[k];
      					if(g[a][b]=='*') cnt++;
      				}
      				cout<<cnt;
      			}
      		}
      		cout<<endl;
      	}
      	return 0;
      }
      • 1

      Information

      ID
      554
      Time
      1000ms
      Memory
      128MiB
      Difficulty
      3
      Tags
      (None)
      # Submissions
      49
      Accepted
      22
      Uploaded By