QBMAX - Đường đi có tổng lớn nhất

Tags: dp

Problem

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)

Input

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

Output

Gồm 1 dòng duy nhất ghi tổng lớn nhất tìm được

Example

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

Tutorial

Đâ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]).


Submission

QBMAX.cpp