HDU 2167 狀態壓縮dp

2022-08-13 18:06:09 字數 754 閱讀 5359

第一道狀態壓縮dp,其實就是爆搜,只不過把排除了大量不可能的情況,先用sta儲存每行可能的情況,sum[i][j]儲存i行j種情況的該行和,然後依次更新dp。

#include#include

#include

using

namespace

std;

int n,sum[20][1

<<15],dp[20][1

<<15],a[20][20],sta[1

<<15

];int

main()

memset(dp,

0,sizeof

(dp));

memset(sum,

0,sizeof

(sum));

int cnt = 0,endd = 1

for(int i = 1;i <= n;i++)}}

for(int i = 1;i <= cnt;i++) dp[1][i] = sum[1

][i];

for(int i = 1;i < n;i++)}}

int ans = 0

;

for(int i = 1;i <= cnt;i++) ans =max(ans,dp[n][i]);

printf(

"%d\n

",ans);

}return0;

}

HDU2167 狀態壓縮DP

狀態壓縮dp 詳見 1 2 狀態壓縮dp 3dp i j 第i行j狀態的最大和 4dp i j max dp i 1 k sum i j 5題意 給定乙個n n的方格,讓你在裡面取出一些數使其和最大,要求每乙個數不能與其相鄰的8個數同時取出6 7 include8 include 9 include...

hdu2167 狀態壓縮DP入門題

照貓畫虎寫了道入門題。講道理這東西我不應該現在才來學tat 狀態壓縮dp入門題 九宮格的相鄰限制條件 n n 3 n 15 dp i j 表示前i行,最後一行狀態為j時得到的最大分數和 對於一行j的所有可能可以用dfs弄出來,在同行搜尋的時候只要保證行不相鄰。在判斷合法狀態轉移的時候,判斷本身 左移...

hdu2167之狀態壓縮

題目大意 給你乙個矩陣,讓你在矩陣中找一些元素使它們加起來和最大,但是當你使用某乙個元素時,那麼這個元素周圍的其它八個元素都不能取!需要記錄上一行的狀態數量,每一種的狀態,和從第一行到上一行每個狀態的總的元素和。當前行的話通過dfs,求出當前行狀態的個數以及每個狀態下當前行的值。之和比較上一行和當前...