Informatică, întrebare adresată de Utilizator anonim, 8 ani în urmă

Moș Crăciun locuiește la polul nord și pregătește cadouri pentru copii cuminți din clasa a X-a A, ajutat de mai mulți spiriduși. Datorită încălzirii globale, gheața se topește, formându-se mai multe banchize. Spiridușii care se află pe alte banchize decât Moș Crăciun nu-l mai pot ajuta pe acesta, spre disperarea generală.

Harta polului nord seamănă cu o matrice cu n linii și m coloane în care elementele pot avea următoarele valori:

0 – zonă cu apă, în care gheața s-a topit.
1 – zonă cu gheață care face parte dintr-o banchiză. Două zone cu gheață fac parte din aceeași banchiză dacă se învecinează pe linie sau pe coloană.
2 – zonă cu gheață în care se găsește Moș Crăciun.
3 – zonă cu gheață în care se găsește un spiriduș
Scrieți un program care să determine câți spiriduși se află pe aceeași banchiză cu Moș Crăciun și îl pot ajuta în continuare să pregătească cadouri pentru copii cuminți din clasa a X-a A.

Date de intrare
Fișierul de intrare moscraciun.in conține pe prima linie numerele n m. Următoarele n linii conțin câte m elemente, 0, 1, 2 sau 3, cu semnificația din enunț.

Date de ieșire
Fișierul de ieșire moscraciun.out va conține pe prima linie numărul C spiriduși de pe banchiza lui Moș Crăciun.

Restricții și precizări
1 ≤ n , m ≤ 100

Răspunsuri la întrebare

Răspuns de rossetta
4
#include <iostream>
using namespace std;

int a[102][102];

int fill(int i, int j) {
    int c = 0;
    if(a[i][j] == 3)
        c++;
    a[i][j] = 0;
    if(a[i-1][j]!=0) c += fill(i-1,j);
    if(a[i][j+1]!=0) c += fill(i,j+1);
    if(a[i+1][j]!=0) c += fill(i+1,j);
    if(a[i][j-1]!=0) c += fill(i,j-1);
    return c;
}

int main()
{
    int n, m;
    cin >> n >> m;
    for(int i=0; i <= n + 1; i++)
      a[i][0] = a[i][m + 1] = 0;
    for(int j = 0; j <=m + 1; j++)
      a[0][j] = a[n + 1][j] = 0;
    
    for(int i=1; i <=n ;i++)
        for(int j=1; j<=m; j++)
            cin >> a[i][j];
    for(int i = 1; i <= n; i++)
        for(int j = 1;j <= m; j++)
            if(a[i][j] == 2)
                cout << fill(i, j);
    return 0;
}



Utilizator anonim: si asta tot 0 puncte da
Utilizator anonim: moscraciun.in

4 6
1 1 3 0 3 0
0 0 1 0 1 1
1 3 2 0 0 0
0 3 0 1 3 1
moscraciun.out

3
Utilizator anonim: asta e exemplul dat
rossetta: pt ca nu am pus fisierele
rossetta: eu folosesc alta sintaxa....pune tu fisierele asa cum ai invatat la scoala
Alte întrebări interesante