动态规划练习题 汇率

题目描述

在以后的若干天里戴维将学习美元与德国马克的汇率。编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值。

输入

输入文件的第一行是一个自然数N,1≤N≤100,表示戴维学习汇率的天数。

接下来的N行中每行是一个自然数A,1≤A≤1000。第i+1行的A表示预先知道的第i+1天的平均汇率,在这一天中,戴维既能用100美元买A马克也能用A马克购买100美元。

输出

输出文件的第一行也是唯一的一行应输出要求的钱数(单位为美元,保留两位小数)。

注意:考虑到实数算术运算中进位的误差,结果在正确结果0.05美元范围内的被认为是正确的,戴维必须在最后一天结束之前将他的钱都换成美元。

样例

DOLLARS.IN

5
400
300
500
300
250

DOLLARS.OUT

266.66

样例解释 (无需输出)

Day 1 ... changing 100.0000 美元= 400.0000 马克

Day 2 ... changing 400.0000 马克= 133.3333 美元

Day 3 ... changing 133.3333 美元= 666.6666 马克

Day 5 ... changing 666.6666 马克= 266.6666 美元

题解

简单动规

#include<cstdio>
#include<iostream>
using namespace std;
int n;
double f[101],g[101],r[101];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%lf",&r[i]);
    f[0]=g[0]=100;
    for(int i=1;i<=n;i++)
        f[i]=max(f[i-1],g[i-1]/r[i]*100.000),
        g[i]=max(g[i-1],f[i-1]/100.000*r[i]);
    printf("%.2lf\n",f[n]);
    return 0;
}
时间: 2024-12-12 19:15:31

动态规划练习题 汇率的相关文章

动态规划练习题

RQNOJ 496 /* dp记录路径的问题 f[i][j]表示用前j个花瓶盛放前i朵花的最大值 */ #include<cstdio> #include<iostream> #include<cstring> #define N 110 #define INF 1000000000 using namespace std; int a[N][N],f[N][N],q[N],n,m; int main() { memset(f,-127/3,sizeof(f)); sc

动态规划练习题(2)

1.完全背包(knapsack.pas) AYYZOJ p1473 1 program p1473; 2 const 3 maxm=200; maxn=30; 4 var 5 i,j,n,m:integer; 6 w,u:array[1..maxn] of integer; 7 f:array[0..maxn,0..maxm] of integer; 8 begin 9 fillchar(w,sizeof(w),0); 10 fillchar(u,sizeof(u),0); 11 readln(

动态规划练习题(1)

1.0/1背包(package.pas) AYYZOJ p1472 1 program p1472; 2 const 3 maxm=200; maxn=30; 4 var 5 m,n,i,j:integer; 6 c,w:array[1..maxn] of integer; 7 f:array[0..maxn,0..maxm] of integer; 8 function max(x,y:integer):integer; 9 begin 10 if x>y then max:=x else m

转载:动态规划

来源:http://blog.sina.com.cn/s/blog_7727572f01011461.html 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法.20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问

练习题(3) -- 另类的动态规划问题

题目如下: 已知 1) 对于数字1  可以表达为 (1) 2) 对于数字2  可以表达为 (1,1)   (2) 解释 1 + 1 = 2 3)  对于数字3  可以表达为 (1,1,1)  (1, 2)  (2, 1)   (3) 1 + 1 + 1 = 3 1 + 2 = 3 2 + 1 = 3 求对于数字N  所有表达项 解法提示: 这是一道比较简单的动态规划问题 对于数字3如果我们把它的所有表达想这样书写 以1为开头的序列的后半部分的和是2 动态规划有两个要素,一个是备忘录,一个是递推公

《挑战程序设计竞赛》课后练习题解集——3.4 熟练掌握动态规划

<挑战程序设计竞赛>课后练习题解集——3.4 熟练掌握动态规划 状态压缩DP POJ 2441  有N头牛,M个槽,N,M≤20,每头牛只在指定的pi个槽里进食,不与其他牛共享槽.问有多少种分配方案. dp[i][S],当前第i头牛要进食,槽的使用状态为S 1 #include <cstdio> 2 #include <cstring> 3 #include <vector> 4 using namespace std; 5 6 int n, m; 7 in

练习题7:袋鼠过河(使用了动态规划求解)

题目描述 一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远.每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为5,就代表袋鼠下一跳最多能够跳5米,如果为0,就会陷进去无法继续跳跃.河流一共N米宽,袋鼠初始位置就在第一个弹簧上面,要跳到最后一个弹簧之后就算过河了,给定每个弹簧的力量,求袋鼠最少需要多少跳能够到达对岸.如果无法到达输出-1. 输入描述: 输入分两行,第一行是数组长度N (1 ≤ N ≤ 1000

动态规划 Dynamic Programming

March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. 前言 本文翻译自TopCoder上的一篇文章: Dynamic Programming: From novice to advanced ,并非严格逐字逐句翻译,其中加入了自己的

几个python练习题

从python公众号里面看到了几道python的练习题,就拿来练练手,结果上手了发现自己还是特别水,不是很难的8道题,我只做出来5道,其中还3道题卡住了,边查边做的.原题链接在这里:http://python.jobbole.com/83641/ 1. 编写代码, 打印1-1亿之内的偶数 看完题目想都没想就直接写了一句: 1 print [i for i in xrange(1, 10**9) if i % 2 == 0]  开始跑结果.然后.死机了.重启时候反省了一下,嗯,的确是有点二,一下生