View Code of Problem 450

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.


Back to problem 450