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) { if(k==0) { return 1; }else { int starth = findline(matrix,lie,h); if(starth==-1) { return 0; }else { int all=0; for(int i =0;i<matrix[starth].length;i++) { if(matrix[starth][i]=='#' && lie[i]==0) { matrix[starth][i]='1'; lie[i]=1; all+=put(matrix,h+1,lie,k-1); matrix[starth][i]='#'; 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.