企鹅 2016 实习生招聘 程序题1:
给出一M*N的矩阵,每个格子中都有一个非负整数,只能向右或向下移动,求从左上角到右下角的所有路径中的最大值(每条路径的值为对路径中所进过的格子中的数求和)。
输入格式:
4 5
1 0 0 8 0
0 0 3 0 0
4 0 0 5 0
0 6 0 0 0
参考上述链接,使用动态规划方法,求出最大值。
虽然题目只要求求出最大值,我觉得还是求一下路径比较稳妥,万一以后遇到也有个思路;方法:使用逆推的方法,从后向前,一步步求出所经过的路径。
package ptc;
import java.util.*;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
//读入m,n
int m = sc.nextInt();
int n = sc.nextInt();
//读入矩阵
int [][] mat = new int [m][n];
for(int i=0; i=0; i--){
for(int j=n-1; j>=0; j--){
if(i==0 &&j==0){