我想编写一个动态编程算法来解决以下问题;为此,我想定义适当的递归关系。这是问题的陈述: 考虑一条长度为K英里的直道,我们试图在其上放置手机天线。可用站点的特征是整数x1,x2,。 。 。 ,xn其中xi表示沿路的天线的位置(0≤xi≤K)。另外,放置在位置xi的天线产生r(0≤i≤n)的收益。两个连续天线之间的距离不能小于或等于5千米。如何以及在何处放置天线以最大化您的收入。
这是我写的重现关系: 变量参数是: k:道路的长度 xi:天线的位置 xi-x(i + 1)> 5
这是为了最大化要放置的天线数量。因此,设N是要放置的天线数。那么N取决于k和xi。 首先,如果第一个天线放置在位置xi,则有k千米的距离,可以放置天线。天线将放置在5 + xi的位置旁边,然后它将保持k-5公里xi,可以放置天线。 如果我决定不种植位置xi的天线,那么我可以将它们种植在5 + xi的位置。
因此我的以下递归关系: N(k,i)= max(Nxi,k)+ N5 + xi,N(xi,in)& &安培; N(xi,in)
是对的吗?感谢。
这是我的算法(我想在 O(n) 中使用算法):
Algorithm Antenna(\emph{int K, int xi, int profit)
{
int K: road lenght
int xi: position of antenna i
While{j < k}
{
xi = j
if{xi < k}
{
return idealPosition
}
j = j+5
return profit
}
}
关于利润,天线越多,你就越有利可图。
答案 0 :(得分:0)
天线是否只能作为特定站点安装?
我假设您的网站按顺序编号。从i = 1开始,你可以
(a)将天线放置在位置i,总得分为1 +仅使用剩余站点的最佳得分,即距离i(j> i)超过5英里的所有站点j (b)不要将天线放在位置i,而是将其放在i + 1处。总得分再次为1 +,只能使用剩余的网站获得。
最优解是max(a,b)