2021-03-19

原题链接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
题意:扫雷游戏,X表示雷,.表示无雷区,每个无雷区上面有一个数字,记录该位置处周围8个位置有多少个雷。现在给出A矩阵雷区和B矩阵雷区,它们无雷区数字之和为suma,sumb,要求(int)(nm/2)次将B矩阵雷区变化成sumb=suma
解题思路:
首先要找到一个规律就是,将一个矩阵的雷区全部变成无雷区,无雷区全部变为雷区,最后得到的sum相同。
然后去找A矩阵与B矩阵每一个位置处不同的数量cnt,如果cnt<=(int)(nm/2),则直接输出A矩阵即可。如果cnt>(int)(nm/2),则先将A矩阵变换为相反的矩阵,然后得到的cnt一定小于等于(int)(nm/2),所以直接输出A的变化矩阵即可
————————————————
版权声明:本文为CSDN博主「Buyi.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/littlegoldgold/article/details/111354354

#include <iostream>

using namespace std;


const int N = 1010;

char g1[N][N], g2[N][N];

int n, m;

int main() {
    cin >> n >> m;
    for (int i = 0; i < n; i ++)    cin >> g1[i];

    for (int i = 0; i < n; i ++)    cin >> g2[i];

    int judge = n * m / 2;

    int cnt = 0;

    for (int i = 0; i < n; i ++)
        for (int j = 0; j < m; j ++) {
            if (g1[i][j] != g2[i][j])   cnt ++;
        }
    if (cnt <= judge) {
        for (int i = 0; i < n; i ++)    cout << g1[i] << endl;
        return 0;
    }
    for (int i = 0; i < n; i ++) {
        for (int j = 0; j < m; j ++) {

            if (g1[i][j] == '.')    cout << 'X';
            else cout << '.';
        }
        cout << endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值