if(板子k左端正下方沒有別的板子)
else if(板子k左端正下方的板子編號是m)
**實現:
/*
poj1661 help himmy
這樣效率太低了,一早上沒看幾個題
**要是不是特別好看懂,先把偽**寫出來就比較好懂了
分析:將板子由高到低按從0到n編號,起始點的為0
不妨認為jimmy開始的位置是乙個編號為0,長度為0的板子
設leftmintime(k)表示從k號板子左端到地面的最短時間
rightmintime(k)表示從k號板子右端到地面的最短時間
if ( 板子k左端正下方沒有別的板子)
else if( 板子k左端正下方的板子編號是m )
leftmintime(k) = h(k)-h(m) +
min( leftmintime(m) + lx(k)-lx(m),
rightmintime(m) + rx(m)-lx(k));}*/
#include #include #include #include using namespace std;
#define max_n 1000
#define infinite 1000000
int t, n, x, y, maxheight;
struct platform
};platform platforms[max_n + 10];//平台
int leftmintime[max_n + 10];//走左邊的最小時間
int rightmintime[max_n + 10];//走右邊的最小時間
int l[max_n + 10];//
//l表示現在這塊板的編號,越在上面的編號越小,bleft表示是否向左邊走
//因為這題分為向左和向右兩種情況
int mintime(int l, bool bleft)//l表示現在這塊板的編號,越在上面的編號越小,bleft表示是否向左邊走
if (i <= n)
else
int nlefttime = y - platforms[i].h + x - platforms[i].lx;//現在平台與下一塊平台的高度差以及下一塊平台左邊界的距離
int nrighttime = y - platforms[i].h + platforms[i].rx - x;//現在平台與下一塊平台的高度差以及下一塊平台右邊界的距離
if (leftmintime[i] == -1) //等於-1表示我初始化過 ,如果還可以向左我們就向左
leftmintime[i] = mintime(i, true);//向左進入子問題
if (l[i] == -1)//等於-1表示我初始化過 ,如果還可以向右我們就向右
l[i] = mintime(i, false);//像右進入子問題
nlefttime += leftmintime[i];//左邊固定花費的時間加上下一場左邊這樣的時間
nrighttime += l[i];//右邊固定花費的時間加上下一場右邊這樣的時間
//返回左邊和右邊走中值小的那乙個
**實現:
#includeusing namespace std;
const int max = 105;
int row, col;
int map[max][max]; // 記錄圖各點的高度。
int dp[max][max]; // 記錄以各點為起點的最長下降路徑的長度。
int dfs(int r, int c)
if (r - 1 >= 1 && map[r][c] > map[r - 1][c])
if (c + 1 <= col && map[r][c] > map[r][c + 1])
if (c - 1 >= 1 && map[r][c] > map[r][c - 1])
return map[r][c] = max;
}int main()
cout << ans << endl;
return 0;
}
動態規劃 Help Jimmy
場景中包括多個長度和高度各不相同的平台,地面是最低的平台,高度為零,長度無限,jimmy老鼠在時刻 0 從高於所有平台的某處開始下落,它的下落速度始終為1公尺 秒,當jimmy落到某個平台上時,遊戲者選擇讓它向左還是向右跑,它跑動的速度也是1公尺 秒,當jimmy跑到平台的邊緣時,開始繼續下落,ji...
POJ1661Help Jimmy(動態規劃)
description help jimmy 是在下圖所示的場景上完成的遊戲。場景中包括多個長度和高度各不相同的平台。地面是最低的平台,高度為零,長度無限。jimmy老鼠在時刻0從高於所有平台的某處開始下落,它的下落速度始終為1公尺 秒。當jimmy落到某個平台上時,遊戲者選擇讓它向左還是向右跑,它...
poj 1661 Help Jimmy 動態規劃
題意 給n個用左端點 右端點 高度標識的平台,問乙個下落速度,移動速度均為1的點下落到地面的最小時間,其中每次下落距離不能超過輸入值max.分析 動態規劃ldp i 表示從第i塊木板左邊下落到地面的最小時間,rdp i 表示從第i塊木板右邊下落到地面的最小時間。poj 1661 sep9 inclu...