Maximum Profit(C++最大利益简单算法)

竞赛训练1 入门问题:Maximum Profit

题目
外汇交易可以通过兑换不同国家的货币以赚取汇率差。比如1美元兑换100日元时购入1000美元,然后等汇率变动到一美元兑换108日元时再卖出,这样就可以赚取(108-100)*1000=8000日元。
现在请将某货币在t时刻的价格RiRi(i=0,1,2…n-1)作为输入数据,计算出价格差Rj-Ri(其中j>i)的最大值。

输入:
第一行输入整数n,接下来n行依次给整数Ri(i=0,1,2…n-1)赋值。

输出:
在单独一行输出最大值。
限制:2≤n≤200000 1≤Rt≤10^9

#include<iostream>
#include<algorithm>
using namespace std;
static const int MAX = 200000;
//求数组里面按照从前到后两两之差的最大值 
int main(){
    
    
	int R[MAX],n;
	cin>>n;
	for(int i=0;i<n;i++)
	cin>>R[i];
	int maxv=-2000000000;//设置一个足够小的初始值,也可以用R[1]-R[0] 
	int minv=R[0];
	for(int i=1;i<n;i++)
	{
    
    
		maxv=max(maxv,R[i]-minv);//更新最大值 
		minv=min(minv,R[i]);//暂存现阶段最小值 
	}
	cout<<maxv<<endl;
	return 0;
} 

时间复杂度O(n)

如果你觉得这篇博客还可以,别忘记点个赞加个关注再走哦。

猜你喜欢

转载自blog.csdn.net/qq_45724216/article/details/107442814
今日推荐