美元(附C语言实现)

该博客介绍了一个帮助戴维在学习美元与德国马克汇率过程中最大化价值的程序。通过跟踪每一天的最大马克数和美元数,利用递推公式更新最优状态。程序在多个评测平台上获得Accepted结果。
摘要由CSDN通过智能技术生成

题目来源

http://www.tyvj.cn:8080/Problem_Show.asp?id=1095

描述 Description

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

输入格式 Input Format

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

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

输出格式 Output Format

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

思路

每一天所能拥有的最大的价值肯定要么是全马克,要么全是美元(不解释)

所以可以记录第i天所能拥有的最大马克数和美元数,来递推

ans[i][1]表示第i天所能拥有的最多的马克

ans[i][0]表示第i天所能拥有的最多的美元

则有:

ans[i][1]=ans[i-1][1];

ans[i][1]=max(ans[j][0]*num[i]/100.0,ans[i][1]);//换成马克

ans[i][0]也同理

代码

#include <stdio.h>
#include <iostream>
using namespace std;
const int N = 100;
double ans[N + 1][2];  //0维表示美元 1维表示马克
doubl
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值