hdu 1565 方格取數 1 狀態壓縮 dp

2021-06-23 02:23:38 字數 847 閱讀 1478

problem description

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

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

input

包括多個測試例項,每個測試例項包括乙個整數n 和n*n個非負數(n<=20)

output

對於每個測試例項,輸出可能取得的最大的和

sample input

3

75 15 21

75 15 28

34 70 5

sample output

188

author

ailyanlu

source

#include

#include

#include

#include

using namespace std;

int n,k;

int map[25][25];

int s[1<<17];

int sum[25][1<<17];

int dp[25][1<<17];

bool ok(int x)

void solve()

} memcpy(dp[0],sum[0],sizeof(sum[0]));

for(i=1;i} }

int max=0;

for(i=0;imax=max(dp[n-1][i],max);

printf("%d\n",max); }

return 0; }

HDU 1565 方格取數 1

hdu 1565 方格取數 1 我的第乙個狀態壓縮dp 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數,從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大 3 75 15 21 75 15 28 34 70 5 188對於每乙個數...

HDU1565 方格取數 1

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

HDU 1565 方格取數 1

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