沒什麼好說的,主要看**注釋,取數,某個位置能放東西,某個位置不能放等等,這類寫法基本都是這樣
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
**注釋:
#include#includeusing namespace std;
#define n 20000 //開到20000就夠了 開到1<<20會超記憶體
int q[n],dp[21][n],a[21][21];
int main()
{ int n,i,j,sum;
while(cin>>n)
{int sum=0;
for(i=0; i<(1<>a[i][j];
memset(dp,0,sizeof(dp));
for(i=1; i<=n; i++)
for(j=0; j
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...