import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args)
throws IOException {
BufferedReader br=new BufferedReader
(new InputStreamReader(System.in));
StringBuffer sb=new StringBuffer();
int t=Integer.parseInt(br.readLine());
for(int i=0;i<t;i++){
int n=Integer.parseInt(br.readLine());
boolean[][]arr=new boolean[n][n];
for(int j=0;j<n;j++){
String temp=br.readLine();
for(int z=0;z<temp.length();z++){
if(temp.charAt(z)=='#'){
arr[j][z]=true;
}
}
}
sb.append("Case #").append(i+1)
.append(": ");
if(checkForSquare(arr)){
sb.append("YES");
}else{
sb.append("NO");
}
sb.append("\n");
}
System.out.print(sb);
}
static boolean checkForSquare(boolean[][]arr){
int iStart=-1,jStart=-1;
boolean flag=false;
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
if(arr[i][j]){
iStart=i;
jStart=j;
flag=true;
break;
}
}
if(flag){
break;
}
}
if(iStart==-1&&jStart==-1){
return false;
}
int iEnd=-1,jEnd=-1;
flag=false;
for(int i=arr.length-1;i>-1;i--){
for(int j=arr[i].length-1;j>-1;j--){
if(arr[i][j]){
iEnd=i;
jEnd=j;
flag=true;
break;
}
}
if(flag){
break;
}
}
if(iStart==iEnd&&jStart==jEnd){
return true;
}
if(iStart>iEnd || jStart>jEnd){
return false;
}
if(iStart-iEnd!=jStart-jEnd){
return false;
}
for(int i=iStart;i<=iEnd;i++){
for(int j=jStart;j<=jEnd;j++){
if(!arr[i][j]){
return false;
}
}
}
return true;
}
}
No comments:
Post a Comment