poj1185--炮兵阵地

经典的状态压缩dp,有几个点要注意

1)必须用三维的状态才能合理的进行状态的转移,用二维的状态约束性不够

2)初始化是必须要同时初始化前两行的所有状态

3)注意位运算的使用。


代码如下:


#include
#include
#include
using namespace std;

int total[1000],cur[110];
int dp[110][200][200];
int top,n,m;
int c[100];

int ok(int x,int y)
{
    if(x&y)
        return 0;
    return 1;
}

int cnt(int x)
{
    int d=0;
    while(x>0)
    {
        if(x&1)
          d++;
        x=x>>1;
    }
    return d;
}

void Allstate()
{
    top=1;
    int k=(1<


你可能感兴趣的:(动态规划)