HDU1565 方格取數 1 狀態壓縮DP

2021-09-10 22:35:28 字數 1871 閱讀 9305

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與hdu1074有點相似,還是用二進位制來記錄表示取或者不取,一行行的進行計算,用乙個陣列記錄上一行的所有取法,乙個陣列記錄現在這行的所有取法,如果取法進行與運算為1的話,那麼就代表有相鄰的而不進行計算,然後這樣一直dp到最後一行便可以得到最後的結果

#include

#include

#include

using

namespace

std;const

int l = 20000;int n,a[20][20];int dp[l],tem[l];int now[l],pre[l];int ans[l],pre_size,now_size;void

dfs(int id,int k,int p,int sum)

dfs(id,k+2,p|(1

dp()

}        for(i = 1; i<=now_size; i++)//目前這行的狀態儲存為上一行                pre_size = now_size;    }}int

main

()    return

0;}

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

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與hdu1074有點相似,還是用二進位制來記錄表示取或者不取,一行行的進行計算,用乙個陣列記錄上一行的所有取法,乙個陣列記錄現在這行的所有取法,如果取法進行與運算為1的話,那麼就代表有相鄰的而不進行計算,然後這樣一直dp到最後一行便可以得到最後的結果

#include

#include

#include

using

namespace

std;const

int l = 20000;int n,a[20][20];int dp[l],tem[l];int now[l],pre[l];int ans[l],pre_size,now_size;void

dfs(int id,int k,int p,int sum)

dfs(id,k+2,p|(1

dp()

}        for(i = 1; i<=now_size; i++)//目前這行的狀態儲存為上一行                pre_size = now_size;    }}int

main

()    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...