我正在处理酒店预订的问题。这是我的问题。
我知道我将在一个月内旅行,假设我将其输入为数组:
split
然后我应该预订7天(1日至7日)和1天(10日)房间,这将花费我900美元。
我可以使用任何算法来确定如何根据我输入的数组预订酒店吗?
答案 0 :(得分:2)
我能想到动态编程解决方案:
<强>输入强>
A
大小为N
RATE_DAY
RATE_WEEK
最佳子问题
查找日A[i]
的最低费用的问题相当于最低费用:
A[i-1]
+ RATE_DAY
A[i-2]
+ RATE_WEEK
的最低费用(如果可能)A[i-3]
+ RATE_WEEK
的最低费用(如果可能)A[i-7]
+ RATE_WEEK
的最低费用(如果可能)在不太正式的术语中,第二天的最佳解决方案是采用另一天的费率,或者以每周费率对其进行分组,比较每周费率的7个可能分组中的每一个,使得当前的一天是其中的一部分。分组。 “(如果可能的话)”部分表示只有在A[i-j]
与A[i]
相同的7天间隔(它们都适合一周)时才应进行此类比较。
这是一种自上而下的动态编程方法。
我用C ++编写了一个小程序来演示: