股票点击打开链接
-
总时间限制
:
- 1000ms
-
描述
-
假设小明一开始有100块钱,给出每天的股票价格,小明可以在这些天内先后进行 一次买操作和 一次卖操作,或者什么也不干。问小明最后最多可以得到多少钱?注意:1. 一定要先买后卖2. 股票最后一定要卖掉3. 数据量较大,如果 简单枚举(买入价,卖出价)会 超时
输入
-
第一行为天数N(1 <= N <= 100000)
接下来一行有N个数Pi,为每天的股票价格,0 < Pi
输出
- 最后小明可以得到最多的钱数。 样例输入
-
5 0.1 0.8 20 0.5 0.01
样例输出
-
20000.00
源码
#include<cstdio>
#include<cmath>
int main()
{
int n;
double r=1,a[100005]={};
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lf",&a[i]);//输入
double min=a[1];
for(int i=1;i<n;i++)
{
if(min<a[i])
continue;//如果小于就不做本次循环,减枝
for(int j=i+1;j<=n;j++)
if(a[i]/a[j]<r)
{
r=a[i]/a[j];
min=a[i];
}//如果比值更大就交换
}
printf("%.2lf\n",100/r);
return 0;
}
谢谢观赏