#1600. 棋盘问题

棋盘问题

描述

描述在一个棋盘上面摆放棋子(棋盘上的某些位置可以放棋子,某些位置不能放棋子),棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于n*n的棋盘,摆放n个棋子的所有可行的摆放方案C。 每组数据的第一行是两个正整数n,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 当为-1 -1时表示输入结束。 随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘上可以放棋子的区域。 . 表示不能放棋子的区域(数据保证不出现多余的空白行或者空白列)。 输出对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证C<2^8)。

输入

第一行是一个正整数n ,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘上可以放棋子的区域。 . 表示不能放棋子的区域(数据保证不出现多余的空白行或者空白列)。

输出

输出摆放的方案数目C (数据保证C<2^8)。

输入样例1

2
#.
.#

输出样例1

2

输入样例2

4
...#
..#.
.#..
#...

输出样例2

1