dp[i][j][k] 表示前i行 在i-1为j 的状态下 第i行为k的状态下 最多能放多少 多少炮台。
#include#include #include #include using namespace std; int dp[100][60][60],st[60],sum[60],a[100]; int n,m,cnt; int get(int x)//处理出x状态下 能放下的炮台数 就是二进制下的1的数量 { int s=0; while(x) { if(x&1)s++; x>>=1; } return s; } int main() { while(scanf("%d%d",&n,&m)!=EOF) { cnt=0; for(int i=0;i