Answers for "Fill cu coada"

0

Fill cu coada

struct Coordonate
{
    int linie, coloana;
};

Coordonate Q[100 * 100 + 1];

void Fill(int istart ,int jstart ,int v)
{
    int st = 1 , dr = 0;
    //initializare coada
    dr ++;
    Q[dr].linie = istart, Q[dr].coloana = jstart;
    //marcare pozitie de start
    A[istart][jstart] = v;
    while(st <= dr) // cat timp coada este nevida
    {   
        int i = Q[st].linie, j = Q[st].coloana; // determinam elementul de la inceputul cozii
        for(int k = 0 ; k < 4 ; k ++)
        {
            int iv = i + di[k], jv = j + dj[k]; // coordonatele vecinului
            if(iv >= 1 && iv <= n && jv >= 1 && jv <= m // element în matrice
                && A[iv][jv] != 1 // element liber
                && A[iv][jv] != v) // nemarcat
            {
                // marcam elementul vecin
                A[iv][jv] = v;
                // il adaugam in coada
                dr ++;
                Q[dr].linie = iv , Q[dr].coloana = jv;
            }
        }
        st ++; // eliminam din coada
    }
}
Posted by: Guest on August-22-2021

Browse Popular Code Answers by Language