public class MinClimbStairs {
public static void main(String[] args) {
System.out.println(minCostClimbingStairs(new int[]{10, 15, 20}));
}
public static int minCostClimbingStairs(int[] cost) {
int length = cost.length;
//定义数组
int[] dp = new int[length + 1];
//赋值
dp[0] = dp[1] = 0;
for(int i = 2; i <= length; i++){
dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
}
return dp[length];
}
}
2.不同路径
public class DifferentPath {
public static void main(String[] args) {
System.out.println(uniquePaths(3,7));
}
public static int uniquePaths(int m, int n) {
//只跟第几行第几列有关,从m+n-2步中抽出m-1步
long ans=1;
for(int i=0;i<Math.min(m-1,n-1);i++){
ans*=m+n-2-i;
ans/=i+1;
}
return (int)ans;
}
}