利用动态规划解决实际问题之多次兑换获取最大外汇收益

探讨了在不同手续费条件下,通过多种货币兑换获取最大收益的优化问题。当手续费为0时,问题具有最优子结构;反之,若手续费任意,则问题的最优子结构特性不再成立。动态规划在此类问题中可能显得计算过剩,但在实际外汇兑换中,由于汇率的波动,仍有一定的应用价值。

题目:

15.3-6假定你希望兑换外汇,你意识到与其直接兑换,不如进行多种外币的一系列兑换,最后兑换到你想要的那种外币,可能会获得更大收益。假定你可以交易n种不同的货币,编号为1,2.....n,兑换从1号货币开始,最终兑换为n号货币。对每两种货币i和j给定汇率rij,意味着你如果有d个单位的货币i,可以兑换dr0个单位的货币j.进行一系列的交易需要支付一定的佣金,金额取决于交易次数。令ck表示k次交易需要支付的佣金。证明:如果对所有k=1,2...n,ck=0,那么寻找最优兑换序列的问题具有最优子结构性质。然后请证明:如果佣金ck为任意值,那么问题不一定具有最优子结构性质。

题目虽然没有要求写出算法,但我也给出算法。

//15.3-6多次兑换货币换取最大收益,本次使用的方法是带备忘的递归
#include <iostream>
using namespace std;
#define n 4
struct Currency_Exchange
{
	double **r;//储存汇率
	int *s;//储存外汇最佳方式的变量
	Currency_Exchange()
	{
		r=new double *[n];
		for (int i=0;i<n;i++)
		{
			r[i]=new double[n];
		}
		s=new int [n];
	}
};
struct Best_Currency_Exchange
{
	static double Max;//最大收益
	static double Min;//最小收益
	int *t;
	static int end;
	Best_Currency_Exchange()
	{
        t=new int[n];
	}
};
double Best_Currency_Exchange::Max=-0x7fffffff;
double Best_
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值