股票1
//
// Created by Administrator on 2021/7/27.
//
#ifndef C__TEST01_BESTTIMETOBUYANDSELLSTOCK_HPP
#define C__TEST01_BESTTIMETOBUYANDSELLSTOCK_HPP
#include <vector>
#include <iostream>
using namespace std;
class BestTimeToBuyAndSellStock {
/*已知后面N天一支股票每天的价格为P0,P1...PN-1
* 可以最多买一股卖一股
* 求最大利润
* 例子:
* 输入:{3, 2, 3, 1, 2}
* 输出:1(2买入,3卖出)
* */
public:
BestTimeToBuyAndSellStock(vector<int> priceN);
int BestTimeToBuyAndSellStockDP(vector<int> &price);
private:
vector<int> price;
};
BestTimeToBuyAndSellStock::BestTimeToBuyAndSellStock(vector<int> priceN):
price(priceN){
price.resize(priceN.size());
}
int BestTimeToBuyAndSellStock::BestTimeToBuyAndSellStockDP(vector<int> &price) {
if(price.empty()){
return 0;
}
int n = price.size();
vector<int> f(n+1);
//f[n]表示第n天的最大利润
f[0] = 0;
for(int i = 0; i< price.size();++i){
for (int j = i; j < price.size(); ++j) {
f[j] = 0;
if(price[j] - price[i] > f[j+1]){
f[j+1] = price[j] - price[i];
}
}
}
return f[n];
}
#endif //C__TEST01_BESTTIMETOBUYANDSELLSTOCK_HPP
主要是给自己看的,所以肯定会出现很多错误哈哈哈哈哈