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