Đây là bài QHĐ cơ bản.
Gọi F[i][j]
là tổng lớn nhất đến được ô i-j
. Nhận thấy ô i-j
đến được từ các ô (i-1;j-1), (i;j-1), (i+1;j-1)
. Do đó F[i][j] = a[i][j] + max(F[i-1][j-1], F[i][j-1], F[i+1][j-1])
.
https://vn.spoj.com/problems/QBMAX
https://oj.vnoi.info/problem/QBMAX
Cho một bảng A
kích thước m x n
(1 <= m, n <= 100
), trên đó ghi các số nguyên aij
(|aij| <= 100
). Một người xuất phát tại ô nào đó của cột 1
, cần sang cột n
(tại ô nào cũng được).
Quy tắc đi: Từ ô (i, j)
chỉ được quyền sang một trong 3 ô (i, j + 1)
; (i - 1, j + 1)
; (i + 1, j + 1)
Dòng 1: Ghi hai số m
, n
là số hàng và số cột của bảng.
M
dòng tiếp theo, dòng thứ i
ghi đủ n
số trên hàng i
của bảng theo đúng thứ tự từ trái qua phải
Gồm 1 dòng duy nhất ghi tổng lớn nhất tìm được
Input
5 7
9 -2 6 2 1 3 4
0 -1 6 7 1 3 3
8 -2 8 2 5 3 2
1 -1 6 2 1 6 1
7 -2 6 2 1 3 7
Output
41
Đây là bài QHĐ cơ bản.
Gọi F[i][j]
là tổng lớn nhất đến được ô i-j
. Nhận thấy ô i-j
đến được từ các ô (i-1;j-1), (i;j-1), (i+1;j-1)
. Do đó F[i][j] = a[i][j] + max(F[i-1][j-1], F[i][j-1], F[i+1][j-1])
.