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.
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.
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.