Advertisement
YORDAN2347

OptimalSelectionOfItems

Nov 26th, 2020
778
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.78 KB | None | 0 0
  1. import java.util.Scanner;
  2. import java.util.Arrays;
  3.  
  4. public class scratch_1
  5. {
  6.     public static boolean statzero = false;
  7.     public static int iteracii = 0;
  8.  
  9.     public static void main(String[] args)
  10.     {
  11.         Scanner scan = new Scanner(System.in);
  12.  
  13.         System.out.println("въведи вместимост на раницата в кг : ");
  14.         int M = Integer.parseInt(scan.nextLine());
  15.         System.out.println("въведи броя на предметите (между 2 и 5) : ");
  16.         int N = scan.nextInt();
  17.         int[] G = new int[N];
  18.  
  19.         for (int i = 0; i < G.length; i++) {
  20.             System.out.println("въведи теглото (не по-малко от 2 кг) на предмет [" + i + "] : ");
  21.             G[i] = scan.nextInt();
  22.         }
  23.         System.out.println();
  24.  
  25.         SortarrayG(G);
  26.         checkbackpack(M, G);
  27.  
  28.     }
  29.  
  30.     private static void SortarrayG(int[] arr) {
  31.  
  32.         int n = arr.length;
  33.         for (int i = 1; i < n; ++i)
  34.         {
  35.             int eXtracted = arr[i];
  36.             int j = i - 1;
  37.  
  38.             while (j >= 0 && arr[j] > eXtracted) {
  39.                 arr[j + 1] = arr[j];
  40.                 j = j - 1;
  41.             }
  42.             arr[j + 1] = eXtracted;
  43.         }
  44.     }
  45.  
  46.     private static void checkbackpack(int M, int[] G) {
  47.         Scanner stop = new Scanner(System.in);
  48.         int[] STAT = new int[G.length];
  49.         int index = 0;
  50.         int startiterindex = 0;
  51.         boolean eop = false;
  52.  
  53.         while (M > 0 && !eop) {
  54.  
  55.             if (G[index] <= M) {
  56.                 M = M - G[index];
  57.                 STAT[index] = STAT[index] + 1;
  58.                 statzero = false;
  59.  
  60.                 System.out.println();
  61.                 System.out.println(" итерация номер :" + ++iteracii + " ----------  ");
  62.                 System.out.println("индекса на текущия предмет е : " + index);
  63.                 System.out.println("а теглото (g) на предмета е : " + G[index]);
  64.                 System.out.println("в раницата (" + (M + G[index]) + " - " + G[index] + ") остават свободни " + M + " кг");
  65.                 System.out.println("stat масив [бр]: " + Arrays.toString(STAT));
  66.                 System.out.println("G-масив  [кг]: " + Arrays.toString(G));
  67.  
  68.  
  69.             } else {
  70.                 System.out.println();
  71.                 System.out.println(" итерация номер :" + ++iteracii + "   ");
  72.                 System.out.println("индекса на текущия предмет е : " + index);
  73.                 System.out.println("а теглото (g) на предмета е : " + G[index]);
  74.                 System.out.println("текущия предмет " + G[index] + "кг е по-тежък от свободното в раницата " + M + " кг");
  75.                 System.out.println("stat масив [бр]: " + Arrays.toString(STAT));
  76.                 System.out.println("G-масив  [кг]: " + Arrays.toString(G));
  77.  
  78.                 System.out.println();
  79.                 if (index + 1 < G.length) {
  80.                     System.out.println("преминаваме към слезващия предмет ------->");
  81.                     System.out.println("ЗА ПРОДЪЛЖАВАНЕ НАТИСНИ) : n ");
  82.                     String Pause = stop.next("n");
  83.                     index++;
  84.                     System.out.println("в раницата са свободни " + M + " кг");
  85.  
  86.  
  87.                 } else {
  88.                     System.out.println(" края на масива с килограмите на предметите ");
  89.                     System.out.println();
  90.                     System.out.println("индекса на последния предмет е : " + index);
  91.                     System.out.println("а теглото (g) на предмета е : " + G[index]);
  92.                     System.out.println("в раницата все аще остават свободни " + M + " кг");
  93.                     System.out.println("stat масив [бр]: " + Arrays.toString(STAT));
  94.                     System.out.println("G-масив  [кг]: " + Arrays.toString(G));
  95.                     System.out.println("(за продължение натисни) : n ");
  96.  
  97.                     String Pause = stop.next("n");
  98.                     System.out.println(" започват обратни итерации  ");
  99.  
  100.                     if (M > 0 || index == G.length + 1) {
  101.  
  102.                         for (int j = index; j >= 0; j--) {
  103.                             if (STAT[j] > 0) {
  104.  
  105.                                 System.out.println();
  106.                                 System.out.println("изваждаме по 1 предмет в обратен ред");
  107.  
  108.                                 System.out.println("(за продължение натисни) : y ");
  109.                                 Pause = stop.next("n");
  110.                                 STAT[j] = STAT[j] - 1;
  111.                                 M = M + G[j];
  112.  
  113.                                 if (j == G.length - 1 && STAT[j] > 0) {
  114.                                     eop = true;
  115.                                 }
  116.                                 System.out.println("stat масив [бр]: " + Arrays.toString(STAT));
  117.                                 System.out.println("G-масив  [кг]: " + Arrays.toString(G));
  118.                                 System.out.println("изваден 1 предмет от " + G[j] + " кг");
  119.                                 System.out.println("в раницата свободните килограми станаха : " + M);
  120.  
  121.                                 System.out.println("(за продължение натисни) : y ");
  122.                                 Pause = stop.next("n");
  123.  
  124.                                 if (startiterindex + j + 1 < G.length) {
  125.                                     startiterindex = j + 1;
  126.  
  127.                                     index = startiterindex;
  128.                                 } else {
  129.                                     index = G.length - 1;
  130.                                 }
  131.  
  132.                             }
  133.                         }
  134.                     }
  135.                 }
  136.             }
  137.         }
  138.         if (M == 0) {
  139.  
  140.             System.out.println();
  141.             System.out.println("--------------------");
  142.             System.out.println("  задачата има решение");
  143.             System.out.println("--------------------");
  144.             System.out.println(" в раницата остават  свободни " + M + " кг");
  145.             System.out.println("stat масив [бр]: " + Arrays.toString(STAT));
  146.             System.out.println("G-масив [кг]: " + Arrays.toString(G));
  147.         }
  148.     }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement