狀態壓縮專題第一題,自己想了很久,最終還是以別人的**為模板寫的。
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 炮兵陣地
非常有趣的乙個問題,也困擾了我一段時間。利用遞迴的話由於有大量重複計算的內容,所以可以使用動態規劃,獲取所有的需要計算的值。題目內容中存在上兩行都對當前行的選擇存在影響,所以不同於一般的動態規劃。我本來是希望將地圖的每兩行合併為一行,之後通過動態規劃儲存在確定上兩行的情況下的最優解。不過在最壞情況下...