首页 > 技术文章 > 蓝桥杯试题 算法提高 秘密行动

LQS-blog 2022-03-09 20:12 原文

简单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 }

 

推荐阅读