Buna! Imi poate cineva experimentat si care stie informatica de ce nu merge codul urmator? Problema este de pe pbinfo ( #837) doar ca putin schimbata. In loc sa fie 1 insulele eu vreau ca 0 sa fie insulele. Am incerat sa fac prim mai multe metode dar nu a mers. Accesez pozitii invalide din memorie si chiar nu inteleg de ce.
#include
using namespace std;
int n, m, counter = 0, mt[100 + 2][100 + 2];
void fill (int i, int j) {
if (mt[i][j] == 1) {
return;
}
mt[i][j] = 1;
if (mt[i + 1][j] == 0) {
fill(i + 1, j);
}
if (mt[i - 1][j] == 0) {
fill(i - 1, j);
}
if (mt[i][j - 1] == 0) {
fill (i, j - 1);
}
if (mt[i][j + 1] == 0) {
fill (i, j + 1);
}
}
int main() {
int n, m, counter = 0;
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cin >> mt[i][j];
}
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if (mt[i][j] == 0) {
++counter;
fill(i, j);
}
}
}
cout << counter;
return 0;
}
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, vă rugăm să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la lista de favorite!