1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import java.util.Scanner;
- public class E {
- static int lmax(int[][] a, int n, int max) {
- for (int i = 0; i < n; i++) {
- int b = 0;
- for (int j = 0; j < n; j++) {
- b += a[j][i];
- }
- max = Math.max(max, b);
- }
- return max;
- }
- static int[][] yy(int[][] a, int b, int n) {
- int c = a[b][n - 1];
- for (int j = n - 1; j > 0; j--) {
- a[b][j] = a[b][j - 1];
- }
- a[b][0] = c;
- return a;
- }
- static int yy2(int[][] a, int[][] z, int b, int n, int c) {
- for (int i = 0; i < n; i++) {
- if (a[b][i] != z[b][i]) {
- c = 0;
- return c;
- }
- }
- return c;
- }
- public static void main(String[] args) {
- while (cin.hasNext()) {
- int n = cin.nextInt();
- if (n == -1) break;
- int[][] m = new int[n][n];
- int[][] z = new int[n][n];
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- m[i][j] = cin.nextInt();
- z[i][j] = m[i][j];
- }
- }
- int max, a, b;
- max = 0;
- int min = lmax(m, n, max);
- for (int i = 1; i < Math.pow(n, n); i++) {
- b = 0;
- m = yy(m, b, n);
- a = 1;
- a = yy2(m, z, b, n, a);
- while (a == 1 && b + 1 < n) {
- b++;
- m = yy(m, b, n);
- a = yy2(m, z, b, n, a);
- }
- max = 0;
- max = lmax(m, n, max);
- min = Math.min(min, max);
- }
- System.out.println(min);
- }
- cin.close();
- }
- static Scanner cin = new Scanner(System.in);
- }
|