poj1321

来源:互联网 发布:虐杀原形1mac版下载 编辑:程序博客网 时间:2024/05/18 02:51
import java.util.Arrays;import java.util.Scanner;public class Main {int X;int l[];boolean rect[][];int size = 0;int left;int k;public Main(int s, int k) {X = s;l = new int[X];rect = new boolean[X][X];left = k;}boolean check(int n) {if (l[n] > -1) {if (!rect[n][l[n]]) {return false;}for (int i = 0; i < n; i++) {if (l[i] == l[n]) {return false;}}}if (X - 1 - n < left) {return false;}return true;}void put(int n) {for (int i = -1; i < X; i++) {l[n] = i;if (i > -1) {left--;}if (check(n)) {if (left == 0) {size++;//System.out.println(Arrays.toString(l));} else {if (n < X - 1)put(n + 1);}}if (i > -1) {left++;}}}public static void main(String[] args) {Scanner scan = new Scanner(System.in);while (true) {int n = scan.nextInt();int k = scan.nextInt();if (n == -1 && k == -1) {break;}Main m = new Main(n, k);for (int i = 0; i < n; i++) {String str = scan.next();char[] chs = str.toCharArray();for (int j = 0; j < n; j++) {if (chs[j] == '#') {m.rect[i][j] = true;}}}m.put(0);System.out.println(m.size);}scan.close();}}