Rezultati

Up. imeNalogaJezikRezultatČas oddaje
zgancejem-2019 Gozdovi C++ 100/100OK 24. apr '19 @ 16:30

Test Točke Porabljen spomin Porabljen čas Status
#1 [več] 10/10 3,160 MiB 0,004 s OK
#2 [več] 10/10 3,129 MiB 0,022 s OK
#3 [več] 10/10 6,027 MiB 0,039 s OK
#4 [več] 10/10 3,203 MiB 0,016 s OK
#5 [več] 10/10 3,008 MiB 0,000 s OK
#6 [več] 10/10 3,988 MiB 0,021 s OK
#7 [več] 10/10 3,250 MiB 0,032 s OK
#8 [več] 10/10 3,020 MiB 0,027 s OK
#9 [več] 10/10 3,242 MiB 0,022 s OK
#10 [več] 10/10 3,270 MiB 0,014 s OK

Ocenjevani program (gozdovi.cpp):
#include <iostream>
#include <string>

using namespace std;

void gozd(string *p, char tg, int x, int y, int n, int m) {
    if (y < 0 || x < 0 || y >= n || x >= m) return;
    if (tg != p[y][x]) return;
    p[y][x] = ' ';
    gozd(p, tg, x-1, y-1, n, m);
    gozd(p, tg, x,   y-1, n, m);
    gozd(p, tg, x+1, y-1, n, m);
    gozd(p, tg, x+1, y,   n, m);
    gozd(p, tg, x+1, y+1, n, m);
    gozd(p, tg, x,   y+1, n, m);
    gozd(p, tg, x-1, y+1, n, m);
    gozd(p, tg, x-1, y,   n, m);
}

int main() {

    int n, m, c, i, x, y;
    char tg;
    string *p;

    while (true) {
        cin >> n >> m;
        if (n + m == 0) return 0;

        c = 0;
        p = new string[n];
        for (i = 0; i < n; ++i)
            cin >> p[i];
        
        for (y = 0; y < n; ++y) {
            for (x = 0; x < m; ++x) {
                if (p[y][x] == ' ') continue;
                tg = p[y][x];
                gozd(p, tg, x, y, n, m);
                ++c;
            }
        }

        cout << c << "\n";
        delete[] p;
    }

    return 0;
}