棋盘问题
时间限制:1秒 内存限制:256M
【问题描述】
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放 \(k\) 个棋子的所有可行的摆放方案。
【输入格式】
第一行是两个正整数,\(n\ k\),用一个空格隔开,表示了将在一个 \(n * n\) 的矩阵内描述棋盘,以及摆放棋子的数目。
随后的 \(n\) 行描述了棋盘的形状:每行有 \(n\) 个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。
【输出格式】
对于每一组数据,给出一行输出,输出摆放的方案数目(数据保证 \(<2^{31}\))。
【输入输出样例1】
Input
2 1
#.
.#
Output
2
【输入输出样例2】
Input
5 3
.###.
.#...
###..
..#..
..##.
Output
24
【数据说明】
对于所有数据保证 \(1 < k ≤ n ≤ 8\)。
【来源】
Mr.he