509. 斐波那契数
不知道为什么给数组赋少了会执行错误
//dp数组表示数列第i项是多少
int fib(int n){
int* dp = (int*)malloc(sizeof(int)*(n+6));
dp[0] = 0;
dp[1] = 1;
for(int i = 2;i < n+1;i++)
{
dp[i] = dp[i-1]+dp[i-2];
}
return dp[n];
}
70. 爬楼梯
int climbStairs(int n){
if(n<=2) return n;
int* dp = (int*)malloc(sizeof(int)*(n+1));
dp[0] = 0;
dp[1] = 1;
dp[2] = 2;
for(int i = 3;i<=n;i++)
{
dp[i] = dp[i-1]+dp[i-2];
}
return dp[n];
}
不知道为什么一定要把n=1和n=2单拎出来不然不行
746. 使用最小花费爬楼梯
//dp数组是到第i个楼梯需要花费的体力
int minCostClimbingStairs(int* cost, int costSize){
int* dp = (int*)malloc(sizeof(int)*(costSize+1));
dp[0] = 0;
dp[1] = 0;
for(int i = 2;i<costSize+1;i++)
{
dp[i] = fmin(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
}
return dp[costSize];
}
```