#include <stdio.h>
int cost(int* arr,int n);
int main() {
int n=0;
scanf("%d",&n);
int arr[100000]={0};
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
int ret=0;
ret=cost(arr,n);
printf("%d",ret);
return 0;
}
int cost(int* arr,int n)
{
int dp[10001]={0};
if(n==1)
return 0;
else if(n==2)
return 0;
else
{
dp[0]=0;
dp[1]=0;
for(int i=2;i<n;i++)
{
dp[i]=dp[i-1]+arr[i-1]<dp[i-2]+arr[i-2]?dp[i-1]+arr[i-1]:dp[i-2]+arr[i-2];
}
return dp[n-1]+arr[n-1]<dp[n-2]+arr[n-2]?dp[n-1]+arr[n-1]:dp[n-2]+arr[n-2];
}
}
当走到第n阶台阶时,可以是从第n-1阶台阶上来的,也可以是从第n-2阶台阶上来的,这时候就需要考虑是从n-1阶台阶上来时花费的少还是从n-2阶台阶上来时花费较少,所有使用一个三目比较符进行比较大小。最后应为当n=1或2的时候,不需要花钱,需要初始化dp[0],与dp[1].