题目大意: 有一支股票, 你买入和卖出的机会不限次数。让你求最大的收益。
解题思路:贪心法,求这个序列的每个递增子序列,将这些递增子序列的最大收益和相加就是结果。
#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
#include <climit>
using namespace std;
class Solution {
public:
int maxProfit(vector<int> &prices) {
if(prices.empty() || prices.size() == 1)
return 0;
int cur_min = prices[0];
int pre = prices[0];
int sum = 0;
for(vector<int>::iterator iter = prices.begin() + 1; iter != prices.end(); iter++) {
if(*iter < pre) {
sum += (pre - cur_min);
cur_min = *iter;
}
pre = *iter;
}
return sum + (pre - cur_min);
}
};