public static void main(String[] args) { Scanner sc=new Scanner(System.in); int c=sc.nextInt(); int r=sc.nextInt(); int[][] arr=new int[c][r]; for (int i = 0; i < c; i++) { for (int j = 0; j < r; j++) { arr[i][j]=sc.nextInt(); } } int max=1; for (int i = 0; i < c; i++) { for (int j = 0; j < r; j++) { int k=arr[i][j]; boolean fa=true; int bian=1; while(fa){
System.out.println(i+"..."+j); if((c<=i+max)&&(r<=j+max)){ System.out.println(max*max); return; } aa:for (int a = i; a <= i+bian&&a<c; a++) { for (int b = j; b <= j+bian&&b<r; b++) { if(arr[a][b]!=k){ fa=false; break aa; } } } if(i!=c-1&&j!=r-1){ if(fa){ bian++; } }else{ fa=false; } if(max<bian){ max=bian; } } System.out.println(bian); } } } }
static int s[][]=new int[200][200]; public static void main(String[] args) { Scanner sc=new Scanner(System.in); int r=sc.nextInt(); int c=sc.nextInt(); for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { s[i][j]=sc.nextInt(); } } int max=1; int min=Math.max(r, c); for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { for (int w = max+1; w <= min; w++) { if(i+w<=r && j+w<=c){ if(ispure(i,j,w)==1) max=w; } else break; } } } System.out.println(max*max); }
private static int ispure(int x, int y, int w) { int a=s[x][y]; for (int i = 0; i < w; i++) { for (int j = 0; j < w; j++) { if(s[x+i][y+j]!=a) return 0; } } return 1; }