Description
在n*n(n≤20)的方格棋盘上放置n个车(可以攻击所在行、列),有些格子不能放,求使它们不能互相攻击的方案总数。
Input
第一行为棋盘的大小n
第二行为障碍的数量m
第三行到第m+3为m个障碍
Output
总数
Sample Input
4
2
1 1
2 2
Sample Output
14
思路:
我们可以设 f [ i ] [ j ] f[i][j] f[i][j]为当前第 i , j i,j i,j这个位置放的答案,虽然这样可行,但我们想到可以优化,那就是状压DP
状压DP就是把维数降一,把其中一维用二进制表示,转换成十进制存到数组里
那我们思考这道题怎么状压
我们用 a a a数组表示这一行障碍的状态,则它的转移就是
a [ x ] + = p o w [ y − 1 ] a[x]+=pow_[y-1] a[x]+