题目
将某货币在t时刻的价格Rt作为输入数据,计算出价格差Rj-Ri(j > i)的最大值
输入:第一行输入整数n,接下来n行依次给整数Rt赋值
输出:在单独一行输出最大值
题解
1.第一种解法,复杂度O(n^2)
#include<iostream>
using namespace std;
int main()
{
//输入要输入的数的总量以及所有数
int n = 0;
cin >> n;
int* a = new int[n];
for(int i = 0;i < n;i++)
{
cin >> a[i];
}
//设置最大值
int max = a[n - 1] - a[0];
for(int i = n - 1;i > 0;i--)
{
for(int j = i-1;j >= 0;j--)
{
if(a[i] - a[j] > max)
{
max = a[i] - a[j];
}
}
}
cout << max << endl;
delete[] a;
}
2.第二种解法,复杂度O(n)
在j自增的同时,将现阶段Rj前方的最小值记录下来
#include<iostream>
using namespace std;
int main()
{
//输入要输入的数的总量以及所有数
int n = 0;
cin >> n;
int* a = new int[n];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
//设置最大值和最小值
int max = a[n - 1] - a[0];
int min = a[0];
//求最大利益
for (int j = 1; j <= n - 1; j++)
{
if(a[j] - min > max)
{
max = a[j] - min;
}
if(a[j] < min)
{
min = a[j];
}
}
cout << max << endl;
delete[] a;
}