0
已解决
求递推关系与边界啊!!!
由于本人豆不够了,所以本帖只发十个豆
https://ke.codingtang.com/#/problem/problemSub?id=4952
李显晨在2021-03-23 17:44:36追加了内容
ding
我可以加到50豆
李显晨在2021-03-23 18:01:01追加了内容
ding
李显晨在2021-03-23 18:12:50追加了内容
ding
李显晨在2021-03-23 18:39:25追加了内容
ding
李显晨在2021-03-23 19:04:55追加了内容
ding
李显晨在2021-03-23 19:59:57追加了内容
ding
李显晨在2021-03-23 20:21:55追加了内容
ding
0
已采纳
0
因为数据的出发点都是最后一行的中间位置的下方,所以在处理边界时要把f数组最后一行除中间数外的数都置为无穷小,防止选的出发点不是最后一行的中间位置的下方
边界处理
if(i!=n/2+1){
f[m+1][i]=-0x3f3f3f3f;
}
递推中有两个边界,一个是j==n,一个是j==1
在处理时将i从m~1遍历,j从1~n遍历
核心递推式
f[i][j]=max(max(f[i+1][j],f[i+1][j+1]),f[i+1][j-1])+a[i][j];
两个边界的递推式你自己想
0
这题的最左边和最右边只能用两个状态推:
最左边:
f[i][j] = max(f[i - 1][j], f[i - 1][j + 1]) + map[i][j];
最右边:
f[i][j] = max(f[i - 1][j], f[i - 1][j - 1]) + map[i][j];
否则:
f[i][j] = max(f[i - 1][j - 1], max(f[i - 1][j], f[i - 1][j + 1])) + map[i][j];
最后输出
f[m + 1][n / 2 + 1]
即可
PS:这题我好像没有写边界,但还是过了
0
