POJ1321(状压DP)

数据比较小,怎么暴力都行。

#include 
#include 
#include 
#include 
#include 
using namespace std;
#define maxn 1<<8
#define maxm 8111111

int n, kk;
char mp[11][11];
long long dp[11][maxn]; //放到第i行 状态为j 已经放置k个棋子的种数
int board[11]; // 第i行的状态
int num[maxn], state[maxn], cnt;

int get (int x) { //x二进制1的个数
    int ans = 0;
    while (x) {
        if (x&1)
            ans++;
        x >>= 1;
    }
    return ans;
}

bool ok (int x) {
    if (x == 0)
        return 1;
    for (int i = 1; i < (1<


你可能感兴趣的:(状压DP)