E.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import java.util.Scanner;
  2. public class E {
  3. static int lmax(int[][] a, int n, int max) {
  4. for (int i = 0; i < n; i++) {
  5. int b = 0;
  6. for (int j = 0; j < n; j++) {
  7. b += a[j][i];
  8. }
  9. max = Math.max(max, b);
  10. }
  11. return max;
  12. }
  13. static int[][] yy(int[][] a, int b, int n) {
  14. int c = a[b][n - 1];
  15. for (int j = n - 1; j > 0; j--) {
  16. a[b][j] = a[b][j - 1];
  17. }
  18. a[b][0] = c;
  19. return a;
  20. }
  21. static int yy2(int[][] a, int[][] z, int b, int n, int c) {
  22. for (int i = 0; i < n; i++) {
  23. if (a[b][i] != z[b][i]) {
  24. c = 0;
  25. return c;
  26. }
  27. }
  28. return c;
  29. }
  30. public static void main(String[] args) {
  31. while (cin.hasNext()) {
  32. int n = cin.nextInt();
  33. if (n == -1) break;
  34. int[][] m = new int[n][n];
  35. int[][] z = new int[n][n];
  36. for (int i = 0; i < n; i++) {
  37. for (int j = 0; j < n; j++) {
  38. m[i][j] = cin.nextInt();
  39. z[i][j] = m[i][j];
  40. }
  41. }
  42. int max, a, b;
  43. max = 0;
  44. int min = lmax(m, n, max);
  45. for (int i = 1; i < Math.pow(n, n); i++) {
  46. b = 0;
  47. m = yy(m, b, n);
  48. a = 1;
  49. a = yy2(m, z, b, n, a);
  50. while (a == 1 && b + 1 < n) {
  51. b++;
  52. m = yy(m, b, n);
  53. a = yy2(m, z, b, n, a);
  54. }
  55. max = 0;
  56. max = lmax(m, n, max);
  57. min = Math.min(min, max);
  58. }
  59. System.out.println(min);
  60. }
  61. cin.close();
  62. }
  63. static Scanner cin = new Scanner(System.in);
  64. }