POJ 1185 炮兵阵地 (状压DP)

2014-11-24 08:50:45 · 作者: · 浏览: 0

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