AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 更多
    • 题解
    • 分享
    • 商店
    • 问答
    • 吐槽
  • App
  • 登录/注册

牛客 2. 扫雷游戏    原题链接    简单

作者: 作者的头像   蹦蹦炸弹512 ,  2023-03-19 17:34:44 ,  所有人可见 ,  阅读 28


0


题目描述

小sun上课的时候非常喜欢玩扫雷。他现小sun有一个初始的雷矩阵,他希望你帮他生成一个扫雷矩阵。

扫雷矩阵的每一行每一列都是一个数字,每个数字的含义是与当前位置相邻的8个方向中,有多少个雷(在下图中,雷用表示);如果当前位置就是雷的话,仍输出一个。

输入样例

....
..**
*.*.
.*.*

输出样例

0122
13**
*4*4
2*3* 

C++ 代码

/*注意整数除整数仍是整数,要变成小数需要加上小数点,气死了QAQ*/
#include <iostream>

using namespace std;
char s[1010][1010];
int dx[8] = {1,1,1,-1,-1,-1,0,0},dy[8] = {0,1,-1,0,1,-1,1,-1};
int main()
{
    int n,m;
    cin >> n >> m;
    for(int i = 0;i < n;i ++) cin >> s[i];
    for(int i = 0;i < n;i ++)
    {
         for(int j = 0;j < m;j ++)
        {
            int cnt = 0;
            if(s[i][j] == '*') cout << '*';
            else
            {
                for(int k = 0;k < 8;k ++)
                {
                    int x = dx[k] + i,y = dy[k] + j;
                    if(x >= n || y >= m || x < 0 || y < 0) continue;//加这个语句防止数组越界
                    //如果不这样的数组从1开始输入
                    if(s[x][y] == '*') cnt ++;

                }
                cout << cnt ;
            }
        }
        cout << endl;
    }

}

0 评论

你确定删除吗?
1024
x

© 2018-2023 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息