Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

[Zadatak] 8 topova na tabli tako da se medjusobno ne napadaju

  • 6 odgovora
  • 5.440 pregleda

Najnovija ↓

Re: [Zadatak] 8 topova na tabli tako da se medjusobno ne napadaju 08.06.2006. u 16:35 · pre 248 meseci #5
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.
Re: [Zadatak] 8 topova na tabli tako da se medjusobno ne napadaju 10.06.2006. u 07:22 · pre 248 meseci #6
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.

Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme