przeszukiwanie w głąb (DFS)
Ostatnio zmodyfikowano 2014-03-13 22:12
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: 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(); } } |
|
michal11 |
» 2014-03-13 22:12:41 Wstaw kod w znaczniki ["cpp"] ["/cpp"] bez cudzysłowów.\
edit. Nie zdążyłem :/ |
|
« 1 » |