fork(1) download
  1. package com.gmail.bleed1979.ptt;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. public class Battle {
  7.  
  8. private static boolean isLegal(StringBuffer[][] table, int people, int sleep) {
  9. // check bigger than sleep
  10. for(int j = 0; j < table[0].length; ++j) {
  11. int counter = 0;
  12. for(int i = 0; i < table.length; ++i) {
  13. if(table[i][j].length() > 0 && table[i][j].toString().equals("sleep")) {
  14. ++counter;
  15. }
  16. }
  17. if(counter > sleep) {
  18. return false;
  19. }
  20. }
  21.  
  22. // check different round
  23. for(int j = 0; j < table[0].length; ++j) {
  24. int[] fight = new int[people + 1];
  25. for(int i = 0; i <= people; ++i) {
  26. fight[i] = 0;
  27. }
  28. for(int i = 0; i < table.length; ++i) {
  29. if(table[i][j].length() > 0 && !table[i][j].toString().equals("sleep")) {
  30. String[] array = table[i][j].toString().split("_");
  31. int i1 = Integer.parseInt(array[0]);
  32. int i2 = Integer.parseInt(array[1]);
  33. fight[i1] += 1;
  34. fight[i2] += 1;
  35. for(int k = 0; k <= people; ++k) {
  36. if(fight[k] > 1) {
  37. return false;
  38. }
  39. }
  40. }
  41. }
  42. }
  43. return true;
  44. }
  45.  
  46. private static void dfs(StringBuffer[][] table, List<String> list, int index, int sleep, StringBuffer flag) {
  47. if("false".equals(flag.toString())) {
  48. if(index == list.size()) {
  49. flag = new StringBuffer("true");
  50. } else {
  51. for(int i = 0; i < table.length; ++i) {
  52. for(int j = 0; j < table[i].length; ++j) {
  53. if(table[i][j].length() == 0) {
  54. table[i][j].append(list.get(index));
  55. if(isLegal(table, list.size(), sleep)) {
  56. dfs(table, list, index + 1, sleep, flag);
  57. if("true".equals(flag.toString())) {
  58. break;
  59. }
  60. }
  61. table[i][j] = new StringBuffer();
  62. }
  63. }
  64. if("true".equals(flag.toString())) {
  65. break;
  66. }
  67. }
  68. }
  69. }
  70. }
  71.  
  72. public static void main(String[] args) {
  73. final int round = 6, people = 8;
  74. int sleep = 6 - (8 / 2);
  75.  
  76. // generate string
  77. List<String> list = new ArrayList<String>();
  78. int[] fight = new int[people + 1];
  79. for(int i = 0; i <= people; ++i) {
  80. fight[i] = 0;
  81. }
  82.  
  83. for(int i = 1; i <= people; ++i) {
  84. for(int k = 0; k < list.size(); ++k) {
  85. String[] array = list.get(k).split("_");
  86. if(array[1].equals("" + i)) {
  87. ++fight[i];
  88. }
  89. }
  90. for(int j = people; j >= 1; --j) {
  91. if(i != j && fight[i] < round) {
  92. boolean flag = false;
  93. for(int k = 0; k < list.size(); ++k) {
  94. String[] array = list.get(k).split("_");
  95. String str1 = "" + i;
  96. String str2 = "" + j;
  97. if((str1.equals(array[0]) && str2.equals(array[1])) ||
  98. (str1.equals(array[1]) && str2.equals(array[0])) ||
  99. fight[j] >= round) {
  100. flag = true;
  101. break;
  102. }
  103. }
  104. if(flag) {
  105. continue;
  106. } else {
  107. String str = i + "_" + j;
  108. list.add(str);
  109. ++fight[i];
  110. }
  111. }
  112. }
  113. }
  114. System.out.println("list size is " + list.size());
  115. for(int i = 0; i < round * sleep; ++i) {
  116. list.add("sleep");
  117. }
  118. for(int i = 0; i < list.size(); ++i) {
  119. System.out.println(list.get(i));
  120. }
  121. System.out.println("total need " + list.size());
  122.  
  123. StringBuffer[][] table = null;
  124. for(int i = 6; i <= 100; ++i) { // i is time section
  125. System.out.print(i + " ");
  126. StringBuffer sbGameOver = new StringBuffer("false");
  127.  
  128. table = new StringBuffer[round][i];
  129. for(int j = 0; j < round; ++j) {
  130. for(int k = 0; k < i; ++k) {
  131. table[j][k] = new StringBuffer();
  132. }
  133. }
  134.  
  135. dfs(table, list, 0, sleep, sbGameOver);
  136. if("true".equals(sbGameOver.toString())) {
  137. break;
  138. }
  139. }
  140.  
  141. if(table != null) {
  142. System.out.println("answer is");
  143. for(int i = 0; i < table.length; ++i) {
  144. for(int j = 0; j < table[i].length; ++j) {
  145. System.out.print(table[i][j] + " ");
  146. }
  147. System.out.println();
  148. }
  149. } else {
  150. System.out.println("no answer");
  151. }
  152. }
  153. }
  154.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:6: error: class Battle is public, should be declared in a file named Battle.java
public class Battle {
       ^
1 error
stdout
Standard output is empty