DP,递推,组合数 其实相当于就是一个递推推式子,然后要用到一点组合数的知识 一道很妙的题,因为不能互相攻击,所以任意行列不能有超过两个炮 首先令f[i][j][k]代表前i行,有j列为一个炮,有k列为两个炮的方案 那么有如下转移: 1,这行不放炮,add+=f[i-1][j][k]; 2,放一个炮,并且放在没有炮的那列 add+=f[i-1][j-1][k] * (m - j - k + 1);,因为放了这个炮后, 一个炮的变多了,也就是上一行的j+1得到这一行的j,所以上一行的j就是j-1,…