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();
}
}
poj1321
最新推荐文章于 2022-10-27 20:55:38 发布