假设你有一个数组,其中第i 个元素是第i天给定股票的价格。设计算法以找到最大利润。你可以根据需要完成尽可能多的交易(即,多次买入并卖出一股股票)。注意:您不能同时进行多笔交易(即,您必须在再次购买之前

  假设你有一个数组,其中第i 个元素是第i天给定股票的价格。设计算法以找到最大利润。你可以根据需要完成尽可能多的交易(即,多次买入并卖出一股股票)。注意:您不能同时进行多笔交易(即,您必须在再次购买之前卖出股票)
  例如:
  给定数组[7,1,5,3,6,4],算法输出:7
  说明:第二天买入(价格:1)第三天卖出(价格:5)利润:5-1=4,然后第四天买入(价格:3)并在第五天卖出(价格:6),利润6-3=3,总利润:4+3=7
  要求给出测试案例,设计算法,并给出算法在你的测试案例上计算得到的结果。


解法: 利用贪心算法自顶向下的策略将子问题分解为最小部分, 只有n+1天股票价格比第n天高, 就累加Sum,最后输出Sum即可。

时间复杂度:O(n)


代码展示

#include<bits/stdc++.h> 
#define len 6
using namespace std;
int Sum = 0;
void maxProfit(int *prices) {
	for(int i = 0; i < len-1; i++) 
		if(prices[i+1]-prices[i] >= 0) 
			Sum += prices[i+1]-prices[i];
}

int main() {
	int prices[6] = {7,1,5,3,6,4};
	maxProfit(prices);
	cout << Sum;
return 0; }
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页