摘要:
题意:略。思路:由于每个大炮射程为2,所以如果对每一行状态压缩的话,能对它造成影响的就是上面的两行。这里用dp[row][state1][state2]表示第row行状态为state2,第row-1行状态为state1时最多可以安放多少大炮。则递推公式为:dp[i][K][J] = max(dp[i-1][L][K] + num[J])。其中num[J]表示状态J的二进制形式里有多少个1。代码我是参考的别人的,觉得写得很好。主要有一下几个地方:1. 在判断一个数二进制形式有多少个1时,用 x & (x - 1) (具体见代码count_one函数)来判断。这种方法的时间复杂度就是x的二 阅读全文