fork download
  1. class Tabella {
  2.  
  3. int n;
  4. String[] csapatok = new String[100];
  5. int[][] matrix;
  6. boolean[] jatszik;
  7. int[] hanyadik;
  8.  
  9. Tabella() {
  10.  
  11. java.util.Scanner scanner = new java.util.Scanner(System.in);
  12. n = 0;
  13.  
  14. while(scanner.hasNext()) {
  15.  
  16. csapatok[n++] = scanner.nextLine();
  17. }
  18.  
  19. matrix = new int[n][n];
  20. jatszik = new boolean[n];
  21. hanyadik = new int[n];
  22.  
  23. for (int i = 0; i < n; i++) {
  24.  
  25. hanyadik[i] = 0;
  26. }
  27.  
  28. for (int i = 0; i < n; i++) {
  29. for (int j = 0; j < n; j++) {
  30.  
  31. matrix[i][j] = 0;
  32. }
  33. }
  34. }
  35.  
  36. void eloszt(int n) {
  37.  
  38. if(hanyadik[n] < maradek(n)) {
  39.  
  40. hanyadik[n]++;
  41. return;
  42. }
  43. else {
  44.  
  45. hanyadik[n] = 0;
  46. eloszt(n + 1);
  47. }
  48. }
  49.  
  50. int kovEllen(int csapat) {
  51.  
  52. int db = hanyadik[csapat];
  53. for (int i = 0; i < n; i++) {
  54.  
  55. if(i != csapat && !jatszik[i] && matrix[csapat][i] == 0) {
  56.  
  57. if(db == 0) {
  58.  
  59. return i;
  60. }
  61. else {
  62.  
  63. db--;
  64. }
  65. }
  66. }
  67.  
  68. return 0;
  69. }
  70.  
  71. int maradek(int csapat) {
  72.  
  73. int db = 0;
  74. for (int i = 0; i < n; i++) {
  75.  
  76. if(i != csapat && matrix[csapat][i] == 0) {
  77.  
  78. db++;
  79. }
  80. }
  81.  
  82. return db;
  83. }
  84.  
  85. void veglegesit() {
  86.  
  87. for (int i = 0; i < n; i++) {
  88. for (int j = 0; j < n; j++) {
  89.  
  90. if(matrix[i][j] == 2) {
  91.  
  92. matrix[i][j] = 1;
  93. }
  94. }
  95. }
  96.  
  97. for (int i = 0; i < n; i++) {
  98.  
  99. hanyadik[i] = 0;
  100. }
  101. }
  102.  
  103. void reset() {
  104.  
  105. for (int i = 0; i < n; i++) {
  106. for (int j = 0; j < n; j++) {
  107.  
  108. if(matrix[i][j] == 2) {
  109.  
  110. matrix[i][j] = 0;
  111. }
  112. }
  113. }
  114.  
  115. eloszt(0);
  116. }
  117.  
  118. void kiir() {
  119.  
  120. for (int i = 0; i < n; i++) {
  121. for (int j = 0; j < n; j++) {
  122.  
  123. if(j > i && matrix[i][j] == 2) {
  124.  
  125. System.out.println(csapatok[i] + " vs " + csapatok[j]);
  126. }
  127. }
  128. }
  129.  
  130. System.out.println();
  131. }
  132.  
  133. void tabella() {
  134.  
  135. for (int fordulo = 1; fordulo < n; fordulo++) {
  136.  
  137. int meccs = 0;
  138.  
  139. do {
  140.  
  141. for (int i = 0; i < n; i++) {
  142.  
  143. jatszik[i] = false;
  144. }
  145.  
  146. for (int hazai = 0; hazai < n; hazai++) {
  147.  
  148. if(!jatszik[hazai]) {
  149.  
  150. int a = kovEllen(hazai);
  151. int b = maradek(hazai);
  152.  
  153. if(!jatszik[a]) {
  154.  
  155. jatszik[a] = jatszik[hazai] = true;
  156. matrix[hazai][a] = 2;
  157. matrix[a][hazai] = 2;
  158. meccs++;
  159. }
  160. }
  161. }
  162.  
  163. if(meccs == n/2) {
  164.  
  165. kiir();
  166. veglegesit();
  167. break;
  168. }
  169. else {
  170.  
  171. meccs = 0;
  172. reset();
  173. }
  174. } while(true);
  175. }
  176. }
  177.  
  178.  
  179. public static void main(String[] args) {
  180.  
  181. System.out.println();
  182. new Tabella().tabella();
  183. }
  184. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty