Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Дадена е шаховска табла. Пресметајте на колку различни начини можат да се постават две “кралици” без да се напаѓаат една со друга. Две
- “кралици” се напаѓаат ако се наоѓаат во ист ред, колона или дијагонала.
- public class Zadaca2 {
- public static void main(String[] args) {
- System.out.println(vkupenBrojNapadi_verzija1());
- System.out.println(vkupenBrojNapadi_verzija2());
- }
- static int vkupenBrojNapadi_verzija1()
- {
- int rezultat=0;
- //odime do 8 oti sahovskata table e 8 x 8
- //proveruvame dali dve kralici se napagaat
- //ke imame 4 for ciklusi oti proveruvame za dve kralici i sekoja kralica ima po 2 for ciklusa eden za redici eden za koloni
- for(int redica1=0;redica1<8;redica1++)
- {
- for(int kolona1=0;kolona1<8;kolona1++)
- {
- for(int redica2=0;redica2<8;redica2++)
- {
- for(int kolona2=0;kolona2<8;kolona2++)
- {
- Kralica k1=new Kralica(redica1,kolona1);
- Kralica k2=new Kralica(redica2,kolona2);
- if(k1.daliSeNapagaat(k2)==-1)
- {
- rezultat++;
- }
- }
- }
- }
- }
- return rezultat;
- }
- static int vkupenBrojNapadi_verzija2()
- {
- int rezultat=0;
- Kralica[]kralici=new Kralica[8*8];
- int k=0;
- for(int redica1=0;redica1<8;redica1++)
- {
- for(int kolona1=0;kolona1<8;kolona1++)
- {
- Kralica k1=new Kralica(redica1,kolona1);
- kralici[k]=k1;
- k++;
- }
- }
- for(int i=0;i<8*8;i++)
- {
- for(int j=i+1;j<8*8;j++)
- {
- if(kralici[1].daliSeNapagaat(kralici[j])==-1)
- {
- rezultat++;
- }
- }
- }
- return rezultat;
- }
- }
- class Kralica
- {
- int kojaRedica;
- int kojaKolona;
- public Kralica(int kojaRedica, int kojaKolona) {
- this.kojaRedica = kojaRedica;
- this.kojaKolona = kojaKolona;
- }
- public int daliSeNapagaat(Kralica kralica2)
- {
- //se napagaat ako se vo ista redica kolona i dijagonala
- if(this.kojaRedica==kralica2.kojaRedica)
- { //ako redicata vo koja se naogame se poklopuva so redicata vo koja se noaga kralicata od konstruktorot
- //vrati eden oti se vo ista redica
- return 1;
- }
- if(this.kojaKolona==kralica2.kojaKolona)
- {
- //ako se na ista kolona povtori vrati 1
- return 1;
- }
- if(Math.abs(this.kojaRedica-kralica2.kojaRedica)==Math.abs(this.kojaKolona=kralica2.kojaKolona))
- {
- //proveruvame dali se na ista dijagonala
- return 1;
- //vrakame 1 ako se na ista
- }
- else
- {
- return -1;
- //vo sekoj dr slucaj vrakame -1
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment