简单dp
分爬和跳两种状态考虑即可
注意事项及代码实现:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int dp[10010][2];//0表示爬上去,1表示跳上去 ,dp表示当前楼层是爬上去的还是跳上去的 5 int a[10010]; 6 int main() 7 { 8 ios::sync_with_stdio(false); 9 cin>>n; 10 for(register int i=1;i<=n;i++) 11 cin>>a[i]; 12 dp[1][0]=a[1];//爬一层 13 dp[1][1]=0;//跳一层 14 for(register int i=2;i<=n;i++) 15 { 16 dp[i][0]=min(dp[i-1][0]+a[i],dp[i-1][1]+a[i]); 17 dp[i][1]=min(dp[i-1][0],dp[i-2][0]); 18 } 19 cout<<min(dp[n][0],dp[n][1])<<endl; 20 21 return 0; 22 }