题目:
2 3
1 2 3
1 0 2
最大值:8
DP算法
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int row = sc.nextInt();
int column = sc.nextInt();
int[][] dpMat = new int[row][column];
int tmpData;
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
tmpData = sc.nextInt();
if (i == 0 && j== 0) {
dpMat[0][0] = tmpData;
} else if(i == 0) {
dpMat[0][j] = tmpData + dpMat[0][j-1];
} else if(j == 0) {
dpMat[i][0] = tmpData + dpMat[i-1][0];
} else {
dpMat[i][j] = Math.max(dpMat[i-1][j], dpMat[i][j-1]) + tmpData;
}
}
}
System.out.println(dpMat[row-1][column-1]);
}
}
DFS
private static int result = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[][] matrix = new int[n][m];
//输入
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
matrix[i][j] = sc.nextInt();
}
}
dfs(matrix, 0, 0, 0);
System.out.println(count);
}
private static void dfs(int[][] matrix, int i, int j, int sum) {
sum += matrix[i][j];
if (i == matrix.length - 1 && j == matrix[0].length - 1) {
result = Math.max(sum, result);
return;
}
if (i < matrix.length - 1) {
dfs(matrix, i + 1, j, sum);
}
if (j < matrix[0].length - 1) {
dfs(matrix, i, j + 1, sum);
}
}