ivana_andreevska

AV3 Tehniki na Algoritmi Zadaca 3

Nov 13th, 2021
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.92 KB | None | 0 0
  1. public class Zadaca3 {
  2.     //KODOT E SO NEKOI GRESKI
  3.     public static void main(String[] args) {
  4.         int[] moneti=new int[5];
  5.  
  6.         System.out.println(brojNaMoneti_verzija1(13));
  7.         System.out.println(brojNaMoneti_verzija2(13, new int[]{1,2,5,10,50},5,moneti));
  8.     }
  9.  
  10.     static int brojNaMoneti_verzija1(int suma)
  11.     {
  12.         //50,10,5,2,1
  13.         /*
  14.         pr ako sumata ni e 150
  15.         150/50=3 -> imame 3 50ki na raspolaganje
  16.         150/10=15-> 10 50ki na raspolaganje
  17.         150/5=30 -> 30 50ki na raspolaganje
  18.         150/2=75 -> 75 2ki na raspolaganje
  19.         150/1=150 -> 150 kecovi na raspolaganje
  20.          */
  21.         int rez=100000000;
  22.         int []moneti={50,10,5,2,1};
  23.         for(int m1=0;m1<=(suma/50);m1++)
  24.         {
  25.             for(int m2=0;m2<=(suma/10);m2++)
  26.             {
  27.                 for(int m3=0;m3<=(suma/5);m3++)
  28.                 {
  29.                     for(int m4=0;m4<=(suma/2);m4++)
  30.                     {
  31.                         for(int m5=0;m5<=suma;m5++)
  32.                         {
  33.                             int pom=m1*50 + m2*10 + m3*5 + m4*2 + m5*1;
  34.  
  35.                             if(pom==suma)
  36.                             {
  37.                                 int brojNaParicki=m1+m2+m3+m4+m5;
  38.                                 if(rez>brojNaParicki)
  39.                                 {
  40.                                     rez=brojNaParicki;
  41.                                 }
  42.                             }
  43.  
  44.                         }
  45.                     }
  46.                 }
  47.             }
  48.         }
  49.         return rez;
  50.     }
  51.  
  52.     static int brojNaMoneti_verzija2(int suma, int[] paricki, int n, int[]moneti)
  53.     {
  54.         //resenie so alcen agloritam
  55.         sortirajParicki(paricki , n);
  56.         //paricki = 50 10 5 2 1
  57.         int i=0;
  58.         int brojacZaMoneti=0;
  59.  
  60.  
  61.         while(suma>0)
  62.         {
  63.             //se dodeka suma>0 i odzemam od parickite
  64.             moneti[i]=suma/paricki[i];
  65.             //ja zimame sumata i delime so brojot na paricki
  66.             //ako sumata ni e 150 i imame 10 paricki br na moneti e 15
  67.  
  68.             suma-=moneti[i] * paricki[i];
  69.             brojacZaMoneti=brojacZaMoneti + moneti[i];
  70.             i++;
  71.         }
  72.  
  73.         while(i<n)
  74.         {
  75.             paricki[i]=0;
  76.             i++;
  77.         }
  78.         return brojacZaMoneti;
  79.  
  80.     }
  81.  
  82.     static void sortirajParicki(int paricki[] , int n , int[]moneti)
  83.     {
  84.         //sakame da gi sortirame parickite za potoa polesno da mozeme da pristapime do niv
  85.         //paricki[] n -brojot na pari
  86.         for(int i=0;i<n-1;i++)
  87.         {
  88.             for(int j=i+1;j<n;j++)
  89.                 //j=i+1 oti sporeduvame sekoe so sekoe
  90.             if(paricki[i]<paricki[j])
  91.             {
  92.                 //gi mestime vo opagacki redosled
  93.                 int temp=paricki[i];
  94.                 paricki[i]=paricki[j];
  95.                 paricki[j]=temp;
  96.             }
  97.         }
  98.     }
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment