Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

przeszukiwanie w głąb (DFS)

Ostatnio zmodyfikowano 2014-03-13 22:12
Autor Wiadomość
celin94
Temat założony przez niniejszego użytkownika
przeszukiwanie w głąb (DFS)
» 2014-03-13 21:52:46
Mam dwuwymiarową tablice, która jest wypełniona za pomocą 0,1,2 - ( punkt startowy), 3 - ( punkt końcowy)(pkt startowy i koncowy jest losowy). Moim pytaniem jest w jaki sposób powinienem użyć biblioteki stack, ponieważ to co zrobiłem nie działa tak jak powinno ( program się zawiesza ). Oto fragment kodu:
C/C++
int a = 1;
stack < int > S;
S.push( tab[ q ][ p ] );
while( 1 ) {
    if( tab[ q + 1 ][ p ] == 0 && tab[ q ][ p - 1 ] == 3 && Visited[ q + 1 ][ p ] == false ) {
        S.push( tab[ q + 1 ][ p ] );
        q++;
        a++;
        Visited[ q ][ p ] = true;
        if( tab[ q ][ p ] == 3 ) {
            cout << "ZNALEZIONO";
            break;
        }
       
       
    }
    if( tab[ q - 1 ][ p ] == 0 && tab[ q ][ p - 1 ] == 3 && Visited[ q - 1 ][ p ] == false ) {
        S.push( tab[ q - 1 ][ p ] );
        q--;
        a++;
        Visited[ q ][ p ] = true;
        if( tab[ q ][ p ] == 3 ) {
            cout << "ZNALEZIONO";
            break;
        }
       
    }
    if( tab[ q ][ p + 1 ] == 0 && tab[ q ][ p - 1 ] == 3 && Visited[ q ][ p + 1 ] == false ) {
        S.push( tab[ q ][ p + 1 ] );
        p++;
        a++;
        Visited[ q ][ p ] = true;
        if( tab[ q ][ p ] == 3 ) {
            cout << "ZNALEZIONO";
            break;
        }
       
    }
    if( tab[ q ][ p - 1 ] == 0 && tab[ q ][ p - 1 ] == 3 && Visited[ q ][ p - 1 ] == false ) {
        S.push( tab[ q ][ p - 1 ] );
        p--;
        a++;
        Visited[ q ][ p ] = true;
        if( tab[ q ][ p ] == 3 ) {
            cout << "ZNALEZIONO";
            break;
        }
       
    }
    else {
        S.pop();
    }
}
P-106322
michal11
» 2014-03-13 22:12:41
Wstaw kod w znaczniki ["cpp"] ["/cpp"] bez cudzysłowów.\

edit.
Nie zdążyłem :/
P-106325
« 1 »
  Strona 1 z 1