knyazer

Untitled

Oct 22nd, 2019
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.80 KB | None | 0 0
  1. package com.school;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Main {
  6.     public static void main(String[] args) {
  7.         Scanner in = new Scanner(System.in);
  8.  
  9.         int len;
  10.         len = in.nextInt();
  11.         int count = 0;
  12.         int[][] T = new int[0][0]; // Двумерный массив со всеми вариациями перестановок кубиков
  13.  
  14.         if (len == 4)
  15.         {
  16.             T = new int[4*3*2][4]; // Генерриуем все варианты перестановки для 4-х кубов
  17.             for (int i = 0; i < len; i++) {
  18.                 for (int j = 0; j < len; j++) {
  19.                     for (int k = 0; k < len; k++) {
  20.                         for (int f = 0; f < len; f++) {
  21.                             if (f == k || k == j || j == i || i == k || j == f || f == i) continue;
  22.                             T[count][0] = i;
  23.                             T[count][1] = j;
  24.                             T[count][2] = k;
  25.                             T[count][3] = f;
  26.                             count += 1;
  27.                         }
  28.                     }
  29.                 }
  30.             }
  31.         }
  32.         else if (len == 3) { // Генерируем все варианты перестанвоки для 3-х кубов
  33.             T = new int[3*2][4];
  34.             for (int j = 0; j < len; j++) {
  35.                 for (int k = 0; k < len; k++) {
  36.                     for (int f = 0; f < len; f++) {
  37.                         if (f == k || k == j || j == f) continue;
  38.                         T[count] = new int[3];
  39.                         T[count][0] = j;
  40.                         T[count][1] = k;
  41.                         T[count][2] = f;
  42.                         count += 1;
  43.                     }
  44.                 }
  45.             }
  46.         }
  47.         else if (len == 2) // Двух
  48.         {
  49.             T = new int[][] {
  50.                     {0, 1}, {1, 0}
  51.             };
  52.             count = 2;
  53.         }
  54.         else if (len == 1) { // И одного
  55.             T = new int[][] {
  56.                     {0}
  57.             };
  58.             count = 1;
  59.         }
  60.  
  61.  
  62.  
  63.         int[] current = new int[len];
  64.         String curr;
  65.         int[] mode = new int[len];
  66.         int[][] values = new int[len][6];
  67.  
  68.         for (int j = 0; j < len; j++)
  69.             for (int i = 0; i < 6; i++)
  70.                 values[j][i] = in.nextInt();
  71.  
  72.         curr = in.next();
  73.         for (int i = 0; i < len; i++)
  74.             current[i] = curr.charAt(i) - 48; // Переводим полученные значения в массив из четырех элементов
  75.  
  76.         int correct = 0;
  77.  
  78.         for (int k = 0; k < count; k++) // Для каждой из перестановок
  79.         {
  80.             correct = 0;
  81.             for (int s = 0; s < len; s++) // Получаем список верхних граней, надо для ответа
  82.                 mode[s] = T[k][s];
  83.             for (int j = 0; j < len; j++) { // Перебираем все кубы
  84.                 for (int i = 0; i < 6; i++) // И каждую грань на каждом кубе
  85.                 {
  86.                     if (values[T[k][j]][i] == current[j]) // Если совпадает - увеличиваем счетчик
  87.                     {
  88.                         correct += 1;
  89.                         break;
  90.                     }
  91.                 }
  92.             }
  93.             if (correct == len) break; // Если все цифры нашли - все круто
  94.         }
  95.  
  96.         if (correct == len) {
  97.             System.out.println("Yes");
  98.             for (int i = 0; i < len; i++)
  99.             {
  100.                 System.out.print(mode[i] + 1 + " ");
  101.             }
  102.         }
  103.         else
  104.         {
  105.             System.out.println("No");
  106.         }
  107.  
  108.     }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment