题目
描述
给你一个N*N的矩阵,每行有一个障碍,数据保证任意两个障碍不在同一行,任意两个障碍不在同一列,要求你在这个矩阵上放N枚棋子(障碍的位置不能放棋子),要求你放N个棋子也满足每行只有一枚棋子,每列只有一枚棋子的限制,求有多少种方案。
输入
第一行一个N,接下来一个N*N的矩阵。N<=200,0表示没有障碍,1表示有障碍,输入格式参考样例
输出
一个整数,即合法的方案数。
输入样例
2
0 1
1 0
输出样例
1
解题思路
学校刚学了排列组合,就看到了这道题……经典的错排问题
把障碍看成每行的那个元素本来的位置,那么题意就是让它们全部错位排列,即没有一个元素在它本来的位置上。
记 f[n] f [ n ] 是n个数错排的方案数,那么
⎧⎩⎨f[n]=(f[n