Arkanium77

Задачи (Обувь, вагоны etc)

May 28th, 2017
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.74 KB | None | 0 0
  1. package classwork;
  2.  
  3. import java.util.*;
  4.  
  5. public class Classwork {
  6.     /**
  7.      * <u>Поэлементное копирование массива</u><br>
  8.      * @param mas исходный массив.
  9.      * @param vm массив в который копируем
  10.      * @param len длина строки обоих массивов
  11.      * @return Массив идентичный исходному.
  12.      */
  13.     static int[][] full(int[][] mas, int[][] vm, int len) {
  14.         for (int i = 0; i < 2; i++) {
  15.             for (int j = 0; j < len; j++) {
  16.                 vm[i][j] = mas[i][j];
  17.             }
  18.         }
  19.         return vm;
  20.     }
  21.     /**
  22.      * <u>Поиск максимального элемента</u><br>
  23.      * из подходящих. Для задачи 3.
  24.      * @param vm массив пар элементов.
  25.      * @param z длина строки массива
  26.      * @param t текущий элемент отбора пар.
  27.      * @return Индекс максимальной из подходящих пар.
  28.      */
  29.     static int max(int[][] vm, int z, int t) {
  30.         int max = 0;
  31.         int a = -1;
  32.         int[] mas = new int[z];
  33.         for (int i = 0; i < z; i++) {
  34.             if (vm[0][i] == t && (vm[1][i] > t)) {
  35.                 mas[i] = vm[1][i];
  36.             }
  37.             if (vm[1][i] == t && (vm[0][i] > t)) {
  38.                 mas[i] = vm[0][i];
  39.             }
  40.         }
  41.         for (int i = 0; i < z; i++) {
  42.             if (mas[i] > max) {
  43.                 max = mas[i];
  44.                 a = i;
  45.             }
  46.         }
  47.         return a;
  48.     }
  49.     /**
  50.      * <u>Поиск минимального подходящего элемента</u><br>
  51.      * Для задачи 1
  52.      * @param mas массив доступной обуви
  53.      * @param k размер ноги.
  54.      * @return Самую маленькую обувь, которую только человек сможет надеть. В идеале - по размеру.
  55.      */
  56.     static int min(int []mas,int k){
  57.         int min=100;
  58.         for(int i=0;i<mas.length;i++){
  59.             if(min>mas[i]&&mas[i]>=k)min=mas[i];
  60.         }
  61.         return min;
  62.     }
  63.  
  64.     public static void main(String[] args) {
  65.         Scanner sc = new Scanner(System.in);
  66.         System.out.println("Выберете задачу:");
  67.         int choo = sc.nextInt();
  68.         switch (choo) {
  69.             case 1: {
  70.                 System.out.println("Размер ноги(<100):");
  71.                 int k = sc.nextInt();
  72.                 System.out.println("Количество пар обуви(<1000):");
  73.                 int n = sc.nextInt();
  74.                 int mas[] = new int[n];
  75.                 int t, q = 0;
  76.                 System.out.println("Вводите размеры, наличиствующие в магазине:");
  77.                 for (int i = 0; i < n; i++) {
  78.                     mas[i] = sc.nextInt();
  79.                 }
  80.  
  81.                 for (int i = 0; i < n; i++) {
  82.                     for (int j = i + 1; j < n; j++) {
  83.                         if (mas[i] > mas[j]) {
  84.                             t = mas[j];
  85.                             mas[j] = mas[i];
  86.                             mas[i] = t;
  87.                         }
  88.                     }
  89.                 }
  90.                 //пройти по всему массиву и найти минимально надеваемый элемент. Дальше идти от него.
  91.                 k=min(mas,k);
  92.                 for (int i = 0; i < n; i++) {
  93.                     if (mas[i] == k) {
  94.                         q = 1;
  95.                     }
  96.                     if (mas[i] >= (k + 3)) {
  97.                         q++;
  98.                         k = mas[i];
  99.                     }
  100.                 }
  101.                 System.out.println("Количество пар обуви, которые можно надеть одновременно - " + q);
  102.                 break;
  103.             }
  104.             case 2: {
  105.                 System.out.println("Введите размер поезда:");
  106.                 int n = sc.nextInt();
  107.                 int mas[] = new int[n];
  108.                 int q = 0;
  109.                 System.out.println("Вагоны:");
  110.                 for (int i = 0; i < n; i++) {
  111.                     mas[i] = sc.nextInt();
  112.                 }
  113.                 for (int i = 1; i < n; i++) {
  114.                     if ((mas[i] - mas[i - 1]) != 1) {
  115.                         q++;
  116.                     }
  117.                 }
  118.                 System.out.println("Минимальное количество расцеплений -" + q);
  119.                 break;
  120.             }
  121.             case 3: {
  122.                 System.out.println("Количество вершин многоугольника:");
  123.                 int n = sc.nextInt();
  124.                 int len = n + (n - 3);
  125.                 int[][] mas = new int[3][len];
  126.                 for (int i = 0; i < n - 1; i++) {
  127.                     mas[0][i] = i + 1;
  128.                     mas[1][i] = i + 2;
  129.                 }
  130.                 mas[0][n - 1] = n;
  131.                 mas[1][n - 1] = 1;
  132.                 for (int i = 0; i < len; i++) {
  133.                     System.out.println((mas[0][i]) + "-" + (mas[1][i]) + " " + (mas[2][i]));
  134.                 }
  135.                 System.out.println("Вводите диагонали (пара вершин):");
  136.                 for (int i = n; i < len; i++) {
  137.                     mas[0][i] = sc.nextInt();
  138.                     mas[1][i] = sc.nextInt();
  139.                 }
  140.                 for (int i = 0; i < len; i++) {
  141.                     System.out.println((mas[0][i]) + "-" + (mas[1][i]) + " " + (mas[2][i]));
  142.                 }
  143.                 System.out.println("Ввод завершён\n_____________");
  144.                 int vm[][] = new int[3][len];
  145.                 vm = full(mas, vm, len);
  146.                 int cl = 1;
  147.                 for (int i = 0; i < len; i++) {
  148.                     int z = 0;
  149.                     /*full(vm, len);
  150.                     for (int j = 0; j < len; j++) {
  151.                         if (mas[0][j] == i + 1 || mas[1][j] == i + 1) {
  152.                             vm[0][z] = mas[0][z];
  153.                             vm[1][z] = mas[1][z];
  154.                             z++;
  155.                         }
  156.                     }*/
  157.                     int max = max(mas, len, i);
  158.                     while (max != -1) {
  159.                         mas[0][max] = -1;
  160.                         mas[1][max] = -1;
  161.                         if (cl == 1) {
  162.                             mas[2][max] = 0;
  163.                             cl = 0;
  164.                         } else {
  165.                             mas[2][max] = 1;
  166.                             cl = 1;
  167.                         }
  168.                         max = max(mas, len, i);
  169.                     }
  170.                 }
  171.  
  172.                 for (int i = 0; i < len; i++) {
  173.                     System.out.println((vm[0][i]) + "-" + (vm[1][i]) + " " + (mas[2][i]));
  174.                 }
  175.                 break;
  176.             }
  177.  
  178.             case 4: {
  179.                 System.out.println("Введите количество товара/стопок:");
  180.                 int n = sc.nextInt();
  181.                 Stack[] mas = new Stack[n];
  182.                 for (int i = 0; i < mas.length; i++) {
  183.                     mas[i] = new Stack();
  184.                 }
  185.  
  186.                 for (int i = 0; i < mas.length; i++) {
  187.                     System.out.println("Введите количество контейнеров в " + (i + 1) + " стопке:");
  188.                     n = sc.nextInt();
  189.                     for (int j = 0; j < n; j++) {
  190.                         System.out.println("Товар какого вида лежит на " + (j + 1) + " этаже " + (i + 1) + " стопки:");
  191.                         mas[i].push(sc.nextInt());
  192.                     }
  193.                 }
  194.  
  195.                 /*----------------------------------*/
  196.  /*             for(int i=1;i<mas.length;i++){
  197.                     while(!mas[i].empty()){
  198.                         mas[0].push(mas[i].pop());
  199.                     }
  200.                 }
  201.                
  202.                 for(int i=0;i<mas.length;i++){
  203.                     while(!mas[i].empty()){
  204.                         if((int)mas[i].peek()-1==i){
  205.                             if(i!=mas.length-1){
  206.                                 mas[i+1].push(mas[i].pop());
  207.                             }
  208.                             else mas[i-1].push(mas[i].pop());
  209.                         }
  210.                         else{
  211.                             mas[(int)mas[i].peek()-1].push(mas[i].pop());
  212.                         }
  213.                     }
  214.                 }
  215.                 for(int i=0;i<mas.length;i++){
  216.                     System.out.println((i+1)+"-стопка:");
  217.                     while(!mas[i].empty()){
  218.                         System.out.print(mas[i].pop()+" ");
  219.                        
  220.                     }
  221.                     System.out.println();
  222.                 }*/
  223.                 //===============================
  224.                 Stack s = new Stack();
  225.  
  226.                 long start = Runtime.getRuntime().freeMemory();
  227.                 double m = System.currentTimeMillis();
  228.                 System.out.println("Сложим все контейнеры в новую стопку.");
  229.                 for (int i = 0; i < mas.length; i++) {
  230.                     while (!mas[i].empty()) {
  231.                         System.out.println("Взяли верхний контейнер из "+(i+1)+" стопки");
  232.                         s.push(mas[i].pop());
  233.                         System.out.println("Поставили наверх в новую");
  234.                     }
  235.                     System.out.println((i+1)+" стопка опустела");
  236.                 }
  237.                 while (!s.empty()) {
  238.                     System.out.println("Кладём верхний контейнер в "+((int) s.peek())+" стопку");
  239.                     mas[(int) s.peek() - 1].push(s.pop());
  240.                 }
  241.                 long end = Runtime.getRuntime().freeMemory();
  242.                 long memoTaken = (start - end);
  243.                 m = (System.currentTimeMillis() - m) / 1000;
  244.                 for (int i = 0; i < mas.length; i++) {
  245.                     System.out.println((i + 1) + "-стопка:");
  246.                     while (!mas[i].empty()) {
  247.                         System.out.print(mas[i].pop() + " ");
  248.                     }
  249.                     System.out.println();
  250.                 }
  251.                 System.out.println("kb:" + memoTaken + "\ntime:" + m);
  252.                 //===============================
  253.                 /*----------------------------------*/
  254.                 break;
  255.             }
  256.         }
  257.     }
  258. }
Advertisement
Add Comment
Please, Sign In to add comment