hdu 1078(記憶化搜尋)

2021-07-10 23:56:41 字數 608 閱讀 8350

題意:

老鼠每次最多走k步停下來,停下的這個位置只能比上乙個停留的位置大,並獲取其價值,每次只能水平或垂直走,問最大能得到的價值

解題思路:這道題可以用記憶化搜尋解決,dp[i][j]表示老鼠在位置(i,j)時可以達到的最優值。因為dp的狀態是乙個有向無環圖,剛開始想會不會走死迴圈,但是這道題有乙個條件:下乙個位置比當前位置的值要大,所以說既然能到當前位置,那麼之前的位置是不可能再次走到的。記憶化搜尋實際上感覺就是在一顆解答樹上進行剪枝,應該算是一種搜尋的策略。

#include#include#includeusing namespace std;

const int maxn = 100;

int n,k,mat[maxn][maxn],dp[maxn][maxn];

int dir[4][2] = ,,,};

bool check(int x,int y,int newx,int newy)

void dfsdp(int x,int y)

if(dp[x][y] == -1) dp[x][y] = mat[x][y];

}int main()

return 0;

}

hdu 1078 記憶化搜尋

hdu 1078 題意 每次可以朝乙個方向走k格,必須走到乙個數值比當前值大的點,問最多數值加起來能有多少,走到不能再走。一開始定義錯了,定義dp i j 為以 i,j 為終點時所能得到的最大值。dp i t dx j t dy max dp i t dx j t dy dp i j a i t d...

HDU 1078 記憶化搜尋

題目鏈結 題意是老鼠一開始在 0,0 點,每個點都有乳酪數目,如果老鼠走到 的話就獲得所有乳酪,老鼠只能水平走和垂直走,問怎麼走才能獲得最 酪數。輸入n和k,n是地圖大小,k是老鼠能走多遠。很簡單的一道題,注意超時,記住用記憶化,貌似就因為要記憶化才被hdu歸類進dp的。下面是 include in...

hdu1078 記憶化搜尋

題目鏈結fatmouse and cheese 乙個網格上有很多cheese,老師偷cheese吃,每次四鄰域最多走k步,下一步的cheese數必須必當前位置多,求能吃到的最多cheese 記憶化搜尋 如圖,從第一行的數開始,每次可以往左下或右下走一格,直到走到最下行,把沿途經過的數全部加起來。如何...