首页 > 编程语言 > 详细

蓝桥杯 算法提高 ADV-302 秘密行动

时间:2020-02-27 16:24:17      阅读:129      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 10010;

int n;
int a[N];
int f[N][2]; // 第二维为0的话表示到达某一层是跳上来的,为1表示爬上来的。
             // 一开始做时根本没想第二维,但是怎么做也做不对,所以又想了一下,其实上楼的过程是有限制的,
             // 比如这一层是跳上来的话,上一层一定是爬上来的,这一层是爬上来的,那么上一层既可以是跳上来的,也可以是爬上来的。

int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];

    f[1][0] = 0;
    f[1][1] = a[1];
    for (int i = 2; i <= n; i++)
    {
        f[i][0] = min(f[i - 1][1], f[i - 2][1]);
        f[i][1] = min(f[i - 1][0], f[i - 1][1]) + a[i]; // 这个不应该是a[i]-a[i-1]吗?但是因为样例没过,所以改了一下,居然才对了。。。
    }

    cout << min(f[n][0], f[n][1]) << endl;

    return 0;
}

蓝桥杯 算法提高 ADV-302 秘密行动

原文:https://www.cnblogs.com/optimjie/p/12372129.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!