(一)读懂题目
关键词:在n行m列的雷区中有一些格子含有地雷(称之为地雷格)
一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向
好嘞,开工
(二)分析算法+时间复杂度和空间复杂度
算法:搜索
时间复杂度:O(8nm)
空间复杂度:O(nm)
(三)代码实现
简单的一道搜索题,上代码——
# include <iostream>
# include <cstdio>
# include <cstring>
using namespace std;
char a[ 105 ] [ 105 ] ;
int b[ 105 ] [ 105 ] ;
int n, m;
int main ( ) { 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++ ) { if ( a[ i- 1 ] [ j] == '*' ) { b[ i] [ j] ++ ; } if ( a[ i] [ j- 1 ] == '*' ) { b[ i] [ j] ++ ; } if ( a[ i- 1 ] [ j- 1 ] == '*' ) { b[ i] [ j] ++ ; } if ( a[ i+ 1 ] [ j+ 1 ] == '*' ) { b[ i] [ j] ++ ; } if ( a[ i+ 1 ] [ j] == '*' ) { b[ i] [ j] ++ ; } if ( a[ i] [ j+ 1 ] == '*' ) { b[ i] [ j] ++ ; } if ( a[ i- 1 ] [ j+ 1 ] == '*' ) { b[ i] [ j] ++ ; } if ( a[ i+ 1 ] [ j- 1 ] == '*' ) { b[ i] [ j] ++ ; } } } for ( int i= 1 ; i<= n; i++ ) { for ( int j= 1 ; j<= m; j++ ) { if ( a[ i] [ j] == '*' ) { cout<< "*" ; } else { cout<< b[ i] [ j] ; } } cout<< endl; } return 0 ;
}
(四)总结反思
本题也就是考察字符数组的基本运算及方位,我们只要每个都将它周围的所有字符一一排查,最后再输出,就可正确过关
OK
到点,下班
点赞,散会!!