hdu 1078 (dp記憶化搜尋)

2021-07-10 05:40:57 字數 584 閱讀 9822

題意:有乙個n*n的方格,每個格仔有乙個價值,經過這個格仔就可以得到這個價值,每次可以橫著或者豎著一步最多走k格,並且每次走的格仔要比上乙個格仔的價值大,問現在從位置(1,1)走,最大可以獲得的價值.

分析:記憶化搜素,dp[i][j]表示的是從位置(i,j)開始走可以獲得的最大價值。記錄下這些價值就可以了。

#include #include #include #include #include using namespace std;

int const maxn = 105;

int dp[maxn][maxn],s[maxn][maxn];

//dp[i][j]表示起點為(i,j)是獲得的最大價值

int n,k;

int t[4][2]=;

int dfs(int x,int y)}}

}dp[x][y]=maxx+s[x][y];

}return dp[x][y];

}int main()

{ while(scanf("%d%d",&n,&k)==2)

{if(n==-1&&k==-1)break;

for(int i=0;i

HDU 1078 DP 記憶化搜尋

給你乙個n n n n 的矩陣,每個位置都有乙個數字a i j 然後從 0,0 開始走,每次只能走1 k步,並且要使得下乙個位置的a大於當前位置的a,要求這麼走下去的最大和。多組輸入,1 n 100 1 n 100 include include include include include us...

HDU 1078 記憶化搜尋 DP

題目大意 給乙個n n正方形,從左上角開始走,每次可以橫著或豎著走,最多走k步 要麼橫著要麼豎著!只能從小數字往大數字走,問結果最大是多少 以下是 includeusing namespace std define inf 0x3f3f3f3f define rep i,a,b for int i ...

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...