美元汇率
pascal吧
全部回复
仅看楼主
level 10
神之怒2012 楼主
【题目描述】
在以后的若干天里戴维将学习美元与德国马克的汇率。编写程序帮助戴维何时应卖货买马克或美元,是他从100美元开始,最后能获得最高可能的价值。
【输入】
第一行是一个自然数n,1≤n≤100,表示戴维学习汇率的天数。
接下来的n行中每行是一个自然数a,1≤a≤1000.第i+1行的a表示预先知道的第i+1天的平均汇率,在这一天中,戴维既能用100美元买a马克也能用a马克购买100美元。
【输出】
一个数据,即要求的钱数(单位为美元,保留两位小数)。
注意:考虑到实数算术运算中进位的误差,结果在确定结果±0.05美元范围内的被认为是
正确的
,戴维必须在最后一天结束前将他的钱都换成美元。
【输入样例】
5
400
300
500
300
250
【输出样例】
266.66
【来源】
贪心算法
2012年08月16日 11点08分 1
level 7
a[i]表示汇率
f[i]代表某天他拥有的最多美元
则有f[i]=max{f[j]/a[j]*a[i]}(0<j<i)
2012年08月16日 15点08分 2
膜拜
2012年10月21日 11点10分
没看懂 Orz
2012年10月21日 13点10分
orz神犇
2012年10月21日 23点10分
level 3
好难
2012年10月21日 06点10分 3
我操!你什么时候来的!
2013年05月11日 09点05分
level 11
根据 2L,得出程序(混合伪代码):
......
for i=1 to n {
for j=1 to i-1 f[i]=max(f[i],f[j]/a[j]*a[i]);
}
......
2012年10月24日 13点10分 4
level 3
program meiyuan;
02 var
03 i,n:longint;f1,f2,x1,x2:real;
04 a:array[0..100]of real;
05 function max(x,y:real):real;
06 begin
07 if x<y then exit(y) else exit(x);
08 end;
09 begin
10 readln(n);
11 for i:=1 to n do
12 read(a[i]);
13 f1:=100;
14 f2:=0;
15 for i:=1 to n do begin
16 x1:=max(f1,(f2*100)/a[i]);
17 x2:=max((f1*a[i])/100,f2);
18 f1:=x1;
19 f2:=x2;
20 end;
21 writeln(f1:0:2);
22 end.
这是一dp,f1表示当天最多美元,f2表示当天最多马克 a[i]是第i天的汇率
就这样,也可以用2维存储f值
2012年10月27日 07点10分 5
level 8
其实不用dp。。。如果今天是美元转马克,如果今天汇率大于昨天的,则转换,否则不转换,如果今天是马克转美元,思想同上,只要今天比昨天汇率小,就转,最后一天如果不是美元,再转一次
2012年10月28日 17点10分 6
这样想有点漏洞...
2014年01月17日 06点01分
1