【题解】最大价值

题目描述

        Dave以某种方法获取了未来几天美元对德国马克的兑换率。现在Dave只有100美元,请编写一个程序,使Dave通过几天的美元与德国马克的兑换后能得到最多的美元。

 

输入格式

        第一行包含一个自然数n(1≤n≤100),表示Dave所知道的兑换率的天数。

        后面跟着n个自然数A(100≤A≤1000)。第i+1行的数A表示第i天的兑换率。它告诉Dave在那天他能用100美元购买A马克,或用A马克购买100美元。

 

输出格式

        只有一行,输出Dave经过n天的兑换后能得到的最多的美元值。结果保留两位小数。注意:Dave不一定每天都需要兑换。

        说明:由于实数运算存在误差,结果在0.05的误差范围内将被认为是正确的。

 

输入样例

3

300

150

200

 

输出样例

200.00

 

题解

         根据贪心的每次要么全部换完,要么不换,那我们分别记录第$i$天的美元最大值和马克最大值即可。

#include 
#include 
#include 
#include 
#define MAXN 101using namespace std;int n;
double a[MAXN][2];
//[0] 美元
//[1] 马克int main()
{scanf("%d", &n);a[0][0] = 100;double tmp;for(register int i = 1; i <= n; i++){scanf("%lf", &tmp);a[i][0] = max(a[i - 1][0], a[i - 1][1] * 100 / tmp);a[i][1] = max(a[i - 1][1], a[i - 1][0] * tmp / 100);}printf("%.2lf", a[n][0]);return 0;
} 
参考程序

 

转载于:https://www.cnblogs.com/kcn999/p/10804533.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部