java动态规划解答
- 注意:给的是嵌套列表,拿取元素要用get()方法,获取长度应该用size()方法
class Solution {
public int minimumTotal(List<List<Integer>> triangle) {
int n=triangle.size()-1;
int m=n+1;
int [][]dp=new int[n+1][m+1];
dp[0][0]=triangle.get(0).get(0);
for(int i=1;i<=n;i++){
for(int j=0;j<=i;j++){
if(j==0){
dp[i][j]=triangle.get(i).get(j)+dp[i-1][j];
}else if(j==i){
dp[i][j]=triangle.get(i).get(j)+dp[i-1][j-1];
}else{
dp[i][j]=Math.min(triangle.get(i).get(j)+dp[i-1][j],triangle.get(i).get(j)+dp[i-1][j-1]);
}
}
}
int min=dp[n][0];
for(int i=0;i<m;i++){
if(min>dp[n][i]){
min=dp[n][i];
}
}
return min;
}
}
嵌套list
package bao1;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class CE1 {
public static void main(String[] args) {
List<List<Integer>>list=new LinkedList<>();
List<Integer>list1=new ArrayList<Integer>();
List<Integer>list2=new ArrayList<Integer>();
List<Integer>list3=new ArrayList<Integer>();
list1.add(1);
list2.add(2);
list2.add(22);
list3.add(3);
list3.add(33);
list3.add(333);
list.add(list1);
list.add(list2);
list.add(list3);
System.out.println(list); // [[1], [2, 22], [3, 33, 333]]
//错误的,需要的是变量,但是找到的是指,只能赋值给变量
//list.get(1).get(1)=list.get(1).get(1)+list.get(0).get(0);
System.out.println(list.size()); //3
System.out.println(list.get(1).size()); //2
System.out.println(list.get(2).size()); //3
}
}