狀壓dp 方格取數 1

2021-08-11 18:09:55 字數 646 閱讀 6388

題目位址

題目大意:給你乙個n*n的格仔的棋盤,每個格仔裡面有乙個非負數。

從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。

思路:zh這個題是好久以前看過題解,當時感覺挺困難的,就沒做,這兩天才做的,對於現在來說也不算是難題了,不過是每個地方都加了數,加個函式算一下就可以了,很標準的狀壓dp題了

**:#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f

using namespace std;

int n,m,dp[17720][25],a[25][25],num[17720];

long long max(long long aa,long long bb)

long long aa(int x,int i)

return sum;

}int main()

{ int i,j,k,l,s,c,ans;

while(~scanf("%d",&n))

{k=0;

ans=0;

memset(dp,0,sizeof(dp));

for(i=0;i

方格取數 1 (狀壓dp入門題)

題意 給你n n的方格中取數,但不能取相鄰的數,上下左右相鄰都不行 求可以取的數之和的最大值。思路 一道狀壓dp入門題,因為給的n並不大,我們用乙個n位二進位制數來表示這一行的n個數取與不取的狀態,因為一行之間相鄰的不能取,所有我們可以把不符合的數全部篩選除去 i i 1 0就是符合要求的數,不然就...

HDU 1565 方格取數 1 (狀壓DP)

problem description 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數。從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。input 包括多個測試例項,每個測試例項包括乙個整數n 和n n個非負數 n 20 ou...

HDU 1565 方格取數 1 狀壓DP

description 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數。從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。input 包括多個測試例項,每個測試例項包括乙個整數n 和n n個非負數 n 20 output 對於每...