fork download
  1.  
  2.  
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5.  
  6.  
  7. int main(){
  8. int n=3;
  9. vector<int>v={2,5,8 };
  10. vector<int>dp(n+1,1000000);
  11. dp[n]=0;
  12. dp[0]=v[0];
  13. //dp[i]=minimum cost to reach ith index.
  14. for(int i=1;i<=n;i=i+1)
  15. {
  16. if(i-2>=0)
  17. dp[i]=min(dp[i],dp[i-2]+v[i]);
  18. if(i-1>=0)
  19. dp[i]=min(dp[i],dp[i-1]+v[i]+v[i+1]);
  20. //cant directly write dp[i+1]+v[i] because i dont know dp[i+1] yet . We are going from 1 to n. So will reach dp[i+1] by dp[i-1]+cost.
  21. //also no consecutive backward move can be made so dont need to consider reaching i+1 from backward jump
  22. }
  23.  
  24. cout<<min(dp[n-1],dp[n])<<endl;;
  25.  
  26. return 0;
  27. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
10