import java.util.*; public class Main { public static void main(String[] args) { Scanner in =new Scanner(System.in); while(in.hasNext()) { int n =in.nextInt(); int k =in.nextInt(); if(n==-1 && k==-1) { break; } char[][] matrix = new char[n][n]; for(int i =0;i<n;i++) { char[] line = in.next().toCharArray(); for(int j=0;j<n;j++) { matrix[i][j]=line[j]; } } int[] lie=new int[n]; int all=0; for(int i =0;i<n-k+1;i++) { all+=put(matrix,i,lie,k); } System.out.println(all); } } public static int put(char[][] matrix,int h,int[] lie,int k) { int all=0; for(int i =0;i<matrix[h].length;i++) { if(matrix[h][i]=='#' && lie[i]==0) { if(k-1==0) { all++; }else { lie[i]=1; for(int j =h+1;j<matrix.length-k+2;j++) { all+=put(matrix,j,lie,k-1); } lie[i]=0; } } } return all; } public static int findline(char[][] matrix,int[] lie,int starth) { int h =starth; while(h<matrix.length) { for(int i =0;i<matrix[h].length;i++) { if(matrix[h][i]=='#' && lie[i]==0) { return h; } } h++; } return -1; } } |
Double click to view unformatted code.