POJ 1185 炮兵陣地

2021-06-19 17:08:55 字數 440 閱讀 2584

狀態壓縮專題第一題,自己想了很久,最終還是以別人的**為模板寫的。

dp共三維,一維是行數,一維是前一行狀態,一維是前第二行狀態。

ps:直接開三維太大,用s陣列記錄下所有可能出現的情況,大大減少時間和空間。

#include#include#include#includeusing namespace std;

char b[105][15];

int a[105];

int s[105];

int c[105];

int n,m;

int dp[105][105][105];

int cout (int x)

return ans;

}int main()

{ while(scanf("%d%d",&n,&m)!=eof)

{for(int i=0;i

poj 1185 炮兵陣地

題目鏈結 題意 在n m的網格地圖上部署炮兵部隊。地圖的每一格可能是山地 用 h 表示 也可能是平原 用 p 表示 如下圖。在每一格平原地形上最多可以布置一支炮兵部隊 山地上不能夠部署炮兵部隊 一支炮兵部隊在地圖上的攻擊範圍如圖中黑色區域所示 如果在地圖中的灰色所標識的平原上部署一支炮兵部隊,則圖中...

POJ 1185 炮兵陣地

include include include include include include include include include include include include include include define sz v int v size define rep i,n ...

POJ 1185 炮兵陣地

非常有趣的乙個問題,也困擾了我一段時間。利用遞迴的話由於有大量重複計算的內容,所以可以使用動態規劃,獲取所有的需要計算的值。題目內容中存在上兩行都對當前行的選擇存在影響,所以不同於一般的動態規劃。我本來是希望將地圖的每兩行合併為一行,之後通過動態規劃儲存在確定上兩行的情況下的最優解。不過在最壞情況下...