【题解】最大价值
题目描述
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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
