problem description
給你乙個n*n的格仔的棋盤,每個格仔裡面有乙個非負數。
從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。
input
包括多個測試例項,每個測試例項包括乙個整數n 和n*n個非負數(n<=20)
output
對於每個測試例項,輸出可能取得的最大的和
sample input
375 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...