題意:有乙個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...