ivana_andreevska

AV3 Tehniki na Algoritmi Zadaca 2

Nov 13th, 2021
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.25 KB | None | 0 0
  1. Дадена е шаховска табла. Пресметајте на колку различни начини можат да се постават две “кралици” без да се напаѓаат една со друга. Две
  2. “кралици” се напаѓаат ако се наоѓаат во ист ред, колона или дијагонала.
  3.  
  4.  
  5. public class Zadaca2 {
  6.     public static void main(String[] args) {
  7.         System.out.println(vkupenBrojNapadi_verzija1());
  8.         System.out.println(vkupenBrojNapadi_verzija2());
  9.     }
  10.     static int vkupenBrojNapadi_verzija1()
  11.     {
  12.         int rezultat=0;
  13.         //odime do 8 oti sahovskata table e 8 x 8
  14.         //proveruvame dali dve kralici se napagaat
  15.         //ke imame 4 for ciklusi oti proveruvame za dve kralici i sekoja kralica ima po 2 for ciklusa eden za redici eden za koloni
  16.         for(int redica1=0;redica1<8;redica1++)
  17.         {
  18.             for(int kolona1=0;kolona1<8;kolona1++)
  19.             {
  20.                 for(int redica2=0;redica2<8;redica2++)
  21.                 {
  22.                     for(int kolona2=0;kolona2<8;kolona2++)
  23.                     {
  24.                         Kralica k1=new Kralica(redica1,kolona1);
  25.                         Kralica k2=new Kralica(redica2,kolona2);
  26.  
  27.                         if(k1.daliSeNapagaat(k2)==-1)
  28.                         {
  29.                             rezultat++;
  30.                         }
  31.  
  32.                     }
  33.                 }
  34.             }
  35.         }
  36.         return rezultat;
  37.     }
  38.  
  39.     static int vkupenBrojNapadi_verzija2()
  40.     {
  41.         int rezultat=0;
  42.         Kralica[]kralici=new Kralica[8*8];
  43.         int k=0;
  44.  
  45.         for(int redica1=0;redica1<8;redica1++)
  46.         {
  47.          for(int kolona1=0;kolona1<8;kolona1++)
  48.          {
  49.              Kralica k1=new Kralica(redica1,kolona1);
  50.              kralici[k]=k1;
  51.  
  52.              k++;
  53.          }
  54.         }
  55.  
  56.         for(int i=0;i<8*8;i++)
  57.         {
  58.             for(int j=i+1;j<8*8;j++)
  59.             {
  60.  
  61.                 if(kralici[1].daliSeNapagaat(kralici[j])==-1)
  62.                 {
  63.                     rezultat++;
  64.                 }
  65.             }
  66.         }
  67.         return rezultat;
  68.     }
  69.  
  70. }
  71. class Kralica
  72. {
  73.     int kojaRedica;
  74.     int kojaKolona;
  75.  
  76.     public Kralica(int kojaRedica, int kojaKolona) {
  77.         this.kojaRedica = kojaRedica;
  78.         this.kojaKolona = kojaKolona;
  79.     }
  80.  
  81.     public int daliSeNapagaat(Kralica kralica2)
  82.     {
  83.         //se napagaat ako se vo ista redica kolona i dijagonala
  84.         if(this.kojaRedica==kralica2.kojaRedica)
  85.         { //ako redicata vo koja se naogame se poklopuva so redicata vo koja se noaga kralicata od konstruktorot
  86.             //vrati eden oti se vo ista redica
  87.             return 1;
  88.         }
  89.         if(this.kojaKolona==kralica2.kojaKolona)
  90.         {
  91.             //ako se na ista kolona povtori vrati 1
  92.             return 1;
  93.         }
  94.         if(Math.abs(this.kojaRedica-kralica2.kojaRedica)==Math.abs(this.kojaKolona=kralica2.kojaKolona))
  95.         {
  96.             //proveruvame dali se na ista dijagonala
  97.             return 1;
  98.             //vrakame 1 ako se na ista
  99.         }
  100.         else
  101.         {
  102.             return -1;
  103.             //vo sekoj dr slucaj vrakame -1
  104.         }
  105.  
  106.     }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment