问题描述:
有一个N*N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币.你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里.请问如何走才能拿到最多的金币.
输入格式:
第一行输入一个正整数n. 以下n行描述该放格.金币数保证是不超过1000的正整数.
输出格式:
最多能拿金币数量.
样例输入:
3
1 3 3 2 2 2 3 1 2
样例输出:
11
数据规模和约定:
n<=1000
算法思想:(动态规划dp数组,时间复杂度为O(n^2))
从最左上的格子出发,每次只能向右边或下边走,要使获得的金币数越多,经过的格子也要最多,即要走到最右下的格子才停止.所以最右下的格子金币总数就是所需要求的值.
接下来分析如何计算dp表格里面的值: 首先要计算dp[0][0]的值;因为从左上角开始出发,那么dp[0][0]的值就是arr[0][0]的值;其次;需要计算dp表格的第一排和第一列,除dp[0]