调了两天,发现是个极其2B的错误…………
[题目大意]
在N*N的棋盘上放K(这个万恶的K)个王,是他们相互之间不攻击,问有多少种方法。
[题目分析]
这个就是一个很经典的状压DP棋盘模型。就是说,我们想让他们不相互攻击,我们可以先用DFS求出保证在一行的情况下不相互攻击的情况,记录在一个数组里,用一个数来表示,他的二进制就表示了一个状态。
然后f[i,j,k]的含义就是前i行放了K个棋子,在第i行是第J个状态时的方案数。
然后就可以转移了,这个转移很好写,就不需要多说了。
我错的地方就是我想用K做循环变量,改变量的时候就在最后统计总和的地方出了问题。
还有一个地方需要注意的就是如果说放的个数比棋盘所有格子的一半还多的话,就肯定无解。
[代码(貌似我没有找到比我还精简的p的代码)]