Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package classwork;
- import java.util.*;
- public class Classwork {
- /**
- * <u>Поэлементное копирование массива</u><br>
- * @param mas исходный массив.
- * @param vm массив в который копируем
- * @param len длина строки обоих массивов
- * @return Массив идентичный исходному.
- */
- static int[][] full(int[][] mas, int[][] vm, int len) {
- for (int i = 0; i < 2; i++) {
- for (int j = 0; j < len; j++) {
- vm[i][j] = mas[i][j];
- }
- }
- return vm;
- }
- /**
- * <u>Поиск максимального элемента</u><br>
- * из подходящих. Для задачи 3.
- * @param vm массив пар элементов.
- * @param z длина строки массива
- * @param t текущий элемент отбора пар.
- * @return Индекс максимальной из подходящих пар.
- */
- static int max(int[][] vm, int z, int t) {
- int max = 0;
- int a = -1;
- int[] mas = new int[z];
- for (int i = 0; i < z; i++) {
- if (vm[0][i] == t && (vm[1][i] > t)) {
- mas[i] = vm[1][i];
- }
- if (vm[1][i] == t && (vm[0][i] > t)) {
- mas[i] = vm[0][i];
- }
- }
- for (int i = 0; i < z; i++) {
- if (mas[i] > max) {
- max = mas[i];
- a = i;
- }
- }
- return a;
- }
- /**
- * <u>Поиск минимального подходящего элемента</u><br>
- * Для задачи 1
- * @param mas массив доступной обуви
- * @param k размер ноги.
- * @return Самую маленькую обувь, которую только человек сможет надеть. В идеале - по размеру.
- */
- static int min(int []mas,int k){
- int min=100;
- for(int i=0;i<mas.length;i++){
- if(min>mas[i]&&mas[i]>=k)min=mas[i];
- }
- return min;
- }
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("Выберете задачу:");
- int choo = sc.nextInt();
- switch (choo) {
- case 1: {
- System.out.println("Размер ноги(<100):");
- int k = sc.nextInt();
- System.out.println("Количество пар обуви(<1000):");
- int n = sc.nextInt();
- int mas[] = new int[n];
- int t, q = 0;
- System.out.println("Вводите размеры, наличиствующие в магазине:");
- for (int i = 0; i < n; i++) {
- mas[i] = sc.nextInt();
- }
- for (int i = 0; i < n; i++) {
- for (int j = i + 1; j < n; j++) {
- if (mas[i] > mas[j]) {
- t = mas[j];
- mas[j] = mas[i];
- mas[i] = t;
- }
- }
- }
- //пройти по всему массиву и найти минимально надеваемый элемент. Дальше идти от него.
- k=min(mas,k);
- for (int i = 0; i < n; i++) {
- if (mas[i] == k) {
- q = 1;
- }
- if (mas[i] >= (k + 3)) {
- q++;
- k = mas[i];
- }
- }
- System.out.println("Количество пар обуви, которые можно надеть одновременно - " + q);
- break;
- }
- case 2: {
- System.out.println("Введите размер поезда:");
- int n = sc.nextInt();
- int mas[] = new int[n];
- int q = 0;
- System.out.println("Вагоны:");
- for (int i = 0; i < n; i++) {
- mas[i] = sc.nextInt();
- }
- for (int i = 1; i < n; i++) {
- if ((mas[i] - mas[i - 1]) != 1) {
- q++;
- }
- }
- System.out.println("Минимальное количество расцеплений -" + q);
- break;
- }
- case 3: {
- System.out.println("Количество вершин многоугольника:");
- int n = sc.nextInt();
- int len = n + (n - 3);
- int[][] mas = new int[3][len];
- for (int i = 0; i < n - 1; i++) {
- mas[0][i] = i + 1;
- mas[1][i] = i + 2;
- }
- mas[0][n - 1] = n;
- mas[1][n - 1] = 1;
- for (int i = 0; i < len; i++) {
- System.out.println((mas[0][i]) + "-" + (mas[1][i]) + " " + (mas[2][i]));
- }
- System.out.println("Вводите диагонали (пара вершин):");
- for (int i = n; i < len; i++) {
- mas[0][i] = sc.nextInt();
- mas[1][i] = sc.nextInt();
- }
- for (int i = 0; i < len; i++) {
- System.out.println((mas[0][i]) + "-" + (mas[1][i]) + " " + (mas[2][i]));
- }
- System.out.println("Ввод завершён\n_____________");
- int vm[][] = new int[3][len];
- vm = full(mas, vm, len);
- int cl = 1;
- for (int i = 0; i < len; i++) {
- int z = 0;
- /*full(vm, len);
- for (int j = 0; j < len; j++) {
- if (mas[0][j] == i + 1 || mas[1][j] == i + 1) {
- vm[0][z] = mas[0][z];
- vm[1][z] = mas[1][z];
- z++;
- }
- }*/
- int max = max(mas, len, i);
- while (max != -1) {
- mas[0][max] = -1;
- mas[1][max] = -1;
- if (cl == 1) {
- mas[2][max] = 0;
- cl = 0;
- } else {
- mas[2][max] = 1;
- cl = 1;
- }
- max = max(mas, len, i);
- }
- }
- for (int i = 0; i < len; i++) {
- System.out.println((vm[0][i]) + "-" + (vm[1][i]) + " " + (mas[2][i]));
- }
- break;
- }
- case 4: {
- System.out.println("Введите количество товара/стопок:");
- int n = sc.nextInt();
- Stack[] mas = new Stack[n];
- for (int i = 0; i < mas.length; i++) {
- mas[i] = new Stack();
- }
- for (int i = 0; i < mas.length; i++) {
- System.out.println("Введите количество контейнеров в " + (i + 1) + " стопке:");
- n = sc.nextInt();
- for (int j = 0; j < n; j++) {
- System.out.println("Товар какого вида лежит на " + (j + 1) + " этаже " + (i + 1) + " стопки:");
- mas[i].push(sc.nextInt());
- }
- }
- /*----------------------------------*/
- /* for(int i=1;i<mas.length;i++){
- while(!mas[i].empty()){
- mas[0].push(mas[i].pop());
- }
- }
- for(int i=0;i<mas.length;i++){
- while(!mas[i].empty()){
- if((int)mas[i].peek()-1==i){
- if(i!=mas.length-1){
- mas[i+1].push(mas[i].pop());
- }
- else mas[i-1].push(mas[i].pop());
- }
- else{
- mas[(int)mas[i].peek()-1].push(mas[i].pop());
- }
- }
- }
- for(int i=0;i<mas.length;i++){
- System.out.println((i+1)+"-стопка:");
- while(!mas[i].empty()){
- System.out.print(mas[i].pop()+" ");
- }
- System.out.println();
- }*/
- //===============================
- Stack s = new Stack();
- long start = Runtime.getRuntime().freeMemory();
- double m = System.currentTimeMillis();
- System.out.println("Сложим все контейнеры в новую стопку.");
- for (int i = 0; i < mas.length; i++) {
- while (!mas[i].empty()) {
- System.out.println("Взяли верхний контейнер из "+(i+1)+" стопки");
- s.push(mas[i].pop());
- System.out.println("Поставили наверх в новую");
- }
- System.out.println((i+1)+" стопка опустела");
- }
- while (!s.empty()) {
- System.out.println("Кладём верхний контейнер в "+((int) s.peek())+" стопку");
- mas[(int) s.peek() - 1].push(s.pop());
- }
- long end = Runtime.getRuntime().freeMemory();
- long memoTaken = (start - end);
- m = (System.currentTimeMillis() - m) / 1000;
- for (int i = 0; i < mas.length; i++) {
- System.out.println((i + 1) + "-стопка:");
- while (!mas[i].empty()) {
- System.out.print(mas[i].pop() + " ");
- }
- System.out.println();
- }
- System.out.println("kb:" + memoTaken + "\ntime:" + m);
- //===============================
- /*----------------------------------*/
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment