题解 | #买卖股票的最好时机(一)#

买卖股票的最好时机(一)

https://www.nowcoder.com/practice/351b87e53d0d44928f4de9b6217d36bb

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

int main() {          //本题为基本的股票买卖问题,采用动态规划方法可以解决
    int n;
    scanf("%d", &n);
    int j;
    vector<int> ivec(n);
    for(int i = 0; i < n; ++i)
    {
        scanf("%d", &j);
        ivec[i] = j;
    }
    vector<vector<int>> price(n, vector<int>(2));     //二维数字dp,price[i][0]代表第i天不持有股票,利润最大值,prince[i][1]代表当天持有股票利润最大值
    price[0][0] = 0;
    price[0][1] = -ivec[0];
    for(int i = 1; i < n; ++i)
    {
        price[i][0] = max(price[i - 1][0], price[i - 1][1] + ivec[i]);
        price[i][1] = max(price[i - 1][1], -ivec[i]);   //因为只能买卖一次股票。因此第i天买入可记为-ivec[i]
    }
    printf("%d", price[n - 1][0]);
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务