Solução Intermediário Informática - Semana 43

Solução de Frederico Ribeiro

Para resolver esse problema podemos passar por todos os elementos da matriz dada pela entrada, e checar caso a posição atual seja terra, se é cercada por no máximo quatro quadrados. Caso seja cercado por menos aumentamos a resposta por um.

Também é importante prestar atenção nos casos de canto.

Código para melhor entendimento:


//solucao de Frederico Bulhoes
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
char v[maxn][maxn];
int main()
{
int m, n;
cin >> m >> n;
for (int i = 0; i <= m+1; i++) {
v[i][0] = '.';
v[i][n+1] = '.';
}
for (int i = 0; i <= n+1; i++) {
v[0][i] = '.';
v[m+1][i] = '.';
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
cin >> v[i][j];
}
}
int total = 0;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (v[i][j] == '#') {
if (v[i-1][j] == '.' or v[i+1][j] == '.' or v[i][j-1] == '.' or v[i][j+1] == '.') total++;
}
}
}
cout << total << "\n";
return 0;
}

view raw

costa.cpp

hosted with ❤ by GitHub