Postaviti na šahovskoj tabli 8 topova tako da se medjusobno ne napadaju.
[Zadatak] 8 topova na tabli tako da se medjusobno ne napadaju
Zaključano
Zakačeno
Ti ne znas kako postaviti 8 topova na plocu da se ne napadaju?
Ti zelis da ti to program izvede?
Ti zelis jedno ili sva moguca rijesenja?
???
Ti zelis da ti to program izvede?
Ti zelis jedno ili sva moguca rijesenja?
???
pa postavi ih po dijagonali...
Potpis
there's something out there
waiting for us,
and it ain't no man...
waiting for us,
and it ain't no man...
Samo tako mi glasi zadatak.
Nemam pojma sta treba. Shvatio sam da se mogu postaviti po dijagonali, ali ne shvatam
kako to da uradim u c++.
Valjda se odnosi na proizvoljnu kombinaciju.
Nemam pojma sta treba. Shvatio sam da se mogu postaviti po dijagonali, ali ne shvatam
kako to da uradim u c++.
Valjda se odnosi na proizvoljnu kombinaciju.
Probaj ovaj algoritam.
Imas dvodimenzionalni niz 8x8. Elementi su 0 ili 1.
Postavljas po jednu jedinicu(1) u svakom redu.
Znaci imas 8 ugnezdjenih petlji i svaka ide od 0 do 7.
Otprilike:
for(i=0;i<8;i++)
{
memset(&tabla[0],0,sizeof(int)*8) // Ocistis 0-tu vrstu
tabla[0]=1; // Postavis novu vrednost
for(j=0;j<8;j++)
{
memset(&tabla[1],0,sizeof(int)*8) // Ocistis 1-vu vrstu
tabla[1][j]=1; // Postavis novu vrednost
....
Tako generises mogucnosti. Pretpostavljas da dva topa ne smeju biti u istom redu. Umesto 2^64 mogucnosti ti svodis problem na 2^24 mogucnosti.Sto je manje-vise prihvatljivo. I kada generises
jednu mogucnost proveravas je sledecim algoritmom: saberes vrednosti u jednoj koloni. I ukoliko je suma
suma po svakoj koloni == 1 onda se topovi ne napadaju.I to je to, samo jos da kodiras.
Pozdrav.
Imas dvodimenzionalni niz 8x8. Elementi su 0 ili 1.
Postavljas po jednu jedinicu(1) u svakom redu.
Znaci imas 8 ugnezdjenih petlji i svaka ide od 0 do 7.
Otprilike:
for(i=0;i<8;i++)
{
memset(&tabla[0],0,sizeof(int)*8) // Ocistis 0-tu vrstu
tabla[0]=1; // Postavis novu vrednost
for(j=0;j<8;j++)
{
memset(&tabla[1],0,sizeof(int)*8) // Ocistis 1-vu vrstu
tabla[1][j]=1; // Postavis novu vrednost
....
Tako generises mogucnosti. Pretpostavljas da dva topa ne smeju biti u istom redu. Umesto 2^64 mogucnosti ti svodis problem na 2^24 mogucnosti.Sto je manje-vise prihvatljivo. I kada generises
jednu mogucnost proveravas je sledecim algoritmom: saberes vrednosti u jednoj koloni. I ukoliko je suma
suma po svakoj koloni == 1 onda se topovi ne napadaju.I to je to, samo jos da kodiras.
Pozdrav.
Citat:
saberes vrednosti u jednoj koloni. I ukoliko je suma
suma po svakoj koloni == 1 onda se topovi ne napadaju.
Možda je bolje da sabere vrednost po dijagonali (glavnoj i sporednoj) pa ako je vrednos jedne od tih dve 8 onda se topovi ne napadaju. Tako će biti manje koraka.
Ali topovi mogu biti i rasuti po tabli, ne moraju biti na dijagonali da se ne bi napadali. Bitno je samo na nema dva topa u istoj koloni ili redu.