Citat:
Humanoid:
Ono s flagovima ne radi:Recimo da postavis kraljicu na 1,1 i sve u redu i stupcu i dijagonalno oznacis sa 'zauzeto',a onda,recimo dodjes na 3,2,koje nije zauzeto,ponovis postupak sa oznacivanjem.Gle sad ovo,kad se vracas sa slijedeceg reda/stupca i maknes kraljicu sa 3,2, ono sto si za (3,2) oznacio sa zauzeto(redovi,stupci,dijagonale) sada "oslobodis",oslobodio si medju ostalim i 3,3.Eto ti problema:3,3 se prikazuje kao slobodno,a nije jer ga napada (1,1).Postoji li jos koji nacin?Ja bih probao BFS kad bih znao kako radi,a ne znam...
Postoji prosto resenje: umesto boolean flag-ova koristis integer flag-ove (inicijalna vrednost 0).
Dakle, postoji tabela integera n*n. Stavis prvu kraljicu na neko polje, i zatim uradis INCREMENT flag-ova svih odgovarajucih polja, znaci postavi se vrednost 1. Zatim stavis drugu kraljicu, i takodje uradis increment odgovarajucih flag-ova (opet vrednost 1). Medjutim, ako se neka polja nalaze u "zoni delovanja" obe kraljice, njihov flag ce biti 2.
Sada obrnuto: maknemo jednu kraljicu i time uradimo DECREMENT odgovarajucih polja...itd. itd. Mislim da je ideja ocigledna.
Pozdrav
Rajko