zoukankan      html  css  js  c++  java
  • 扫雷游戏

    题目描述 Description

    扫雷游戏是一款十分经典的单机小游戏。 在 n 行 m 列的雷区中有一些格子含有地雷(称之为地雷格) ,其他格子不含地雷(称之为非地雷格) 。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。 游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。
    现在给出n行m列的雷区中的地雷分布, 要求计算出每个非地雷格周围的地雷格数。
    注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。

    输入描述 Input Description

    输入文件第一行 是用一个空格隔开的 两个整数n和m, 分别表示雷区的行数和列数。

    接下来 n 行,每行 m 个字符,描述了雷区中的地雷分布情况。字符 '*' 表示相应格子是地雷格,字符 '?' 表示相应格子是非地雷格。相邻字符之间无分隔符。

    输出描述 Output Description

    输出文件包含 n 行,每行 m 个字符,描述整个雷区。用 '*' 表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符。

    样例输入 Sample Input

    输入样例 1
    3 3
    *??
    ???
    ?*?

    输入样例 2
    2 3
    ?*?
    *??

    样例输出 Sample Output

    输出样例 1
    *10
    221
    1*1

    输出样例 2
    2*1

    *21

    数据范围及提示 Data Size & Hint

    对于 100%的数据,1≤n≤100,1≤m≤100

    代碼實現:

     1 #include<iostream>
     2 using namespace std;
     3 int n,m,map[120][120],z,w;
     4 int hb[]={-1,-1,0,1,1,1,0,-1};
     5 int lb[]={0,1,1,1,0,-1,-1,-1};
     6 char ch;
     7 bool v[120][120];
     8 int main(){
     9 cin>>n>>m;
    10 for(int i=1;i<=n;i++)
    11 for(int j=1;j<=m;j++){
    12 cin>>ch;
    13 if(ch=='*') v[i][j]=1;
    14 }
    15 for(int i=1;i<=n;i++)
    16 for(int j=1;j<=m;j++)
    17 if(!v[i][j]) for(int k=0;k<8;k++){
    18 z=i+hb[k];w=j+lb[k];
    19 if(v[z][w]) ++map[i][j];
    20 }
    21 for(int i=1;i<=n;i++)
    22 for(int j=1;j<=m;j++){
    23 if(v[i][j]) cout<<"*";
    24 else cout<<map[i][j];
    25 if(j==m) cout<<endl;
    26 }
    27 return 0;
    28 }
    View Code

    水一下~

  • 相关阅读:
    mac os 添加用户到组 命令
    mac下 codeigniter在apache下去掉index.php
    chrome的timeline中stalled问题解析
    Message Queue vs. Web Services?
    使用bootstrap框架的模态框与ckeditor产生冲突,ckeditor的弹出窗不可用时的解决方法
    file_get_contents微信头像等待时间过长的原因
    javascript学习笔记
    javascript学习笔记
    javascript学习笔记
    javascript学习笔记
  • 原文地址:https://www.cnblogs.com/J-william/p/6041413.html
Copyright © 2011-2022 走看看