題目鏈接:http://codeforces.com/gym/102900/problem/B
題意:掃雷游戲,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的變化矩陣即可
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<math.h>
#include<string.h>
#include<string>
using namespace std;
#define ll long long
const int mod = 1e9 + 7;
int n, m;
char a[1100][1100];
char b[1100][1100];
int maxt;
int cnt;
int main() {
scanf("%d%d", &n, &m);
maxt = n * m / 2;
for (int i = 0; i < n; i++)
scanf("%s", a[i]);
for (int i = 0; i < n; i++)
scanf("%s", b[i]);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] != b[i][j])
cnt++;
}
}
if (cnt <= maxt) {
for (int i = 0; i < n; i++)
printf("%s\n", a[i]);
}
else {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (a[i][j] == '.')
printf("X");
else
printf(".");
}
printf("\n");
}
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237532.html
標籤:其他
上一篇:模型計算機簡單介紹
