好了這題就是較為簡單的座標類dp(感覺),總之是乙個二維的區域,需要一步一步地向可前進方向dp,而倒退過來,就是每乙個地方取之前的地方裡最多的乙個進行選擇,然後得出本格數量。
那麼本題只能往3個方向走,如果本所在格為i,j,那麼....
i,ji-1,j-1
i-1,j
i-1,j+1
可以走到i,j的三個格仔將這麼表示。可得出狀態轉移方程。
f[i][j]=max(max(f[i-1][j],f[i-1][j-1]),f[i-1][j+1])+a[i][j];
其中a[i][j]為本格所獲能量值。
以上了解了之後本題就相當簡單了。
#include#include#include#includeusing namespace std;
#define tcl(a,b,c) for(a=b;a<=c;a++)
const int maxx=201;
int n,m,a[maxx][maxx],f[maxx][maxx],i,j,x,y;
int main()
}tcl(i,1,n)
}int ans;
ans=max(max(f[x][y],f[x][y-1]),f[x][y+1]);//因為只能朝題中所說的三個方向走,所以自然是在這其中取最大。
printf("%d",ans);
return 0;
}
每日一題 101 正規表示式匹配(動歸 遞迴)
給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 和 的正規表示式匹配。所謂匹配,是要涵蓋整個字串 s的,而不是部分字串。說明 示例 1 輸入 s aa p a 輸出 false 解釋 a 無法匹配 aa 整個字串。示例 2 輸入 s aa p a 輸出 true 解釋 因為 代表可以匹配零...
滴滴第一題
方法 先求字首和,將pair 字首和的值,字首和標號i 加入multimap中,搜尋每一種字首和的lowerbound和upbound,計算兩者之差,與字首和為零的標號比較,取最大值。include include include includeusing namespace std define ...
杭電第一題
getchar的用法 首先getchar是在stdio.h中宣告一下才能用,所以標頭檔案中必須有stdio.h。他接收的是字元!他的操作原理 當編譯執行至getchar 時,使用者輸入了字元按下回車鍵後,他以回車鍵為開始標識,開始乙個乙個從stdio流中讀取字元,每次讀取字元後,getchar函式的...