我有一个面试问题。我不知道如何解决它。请帮我解决。 问题:让我们考虑网站中有一个3X3广告块。我们有一个数据库表,由第三方供应商填充,其中有大量广告,大小分别为1X1和3X3。 我们必须推导出一种算法,以便在任何给定的时间点获取最赚钱的广告组合(即)找到适合整个3X3块的广告组合,并且该组合必须是最有利可图的组合。 例如。请考虑以下数据,并将条目作为广告
size price
3X3 3000
1X3 1000
2X3 2500
在上面,虽然有一个大小为3X3的广告可以完美地适合我们的块,使用它会获得3000美元,但如果我们选择使用第2行和第3行,我们可以很容易地填充我们的块,也得到3500比使用3X3广告更大。如果有新条目,如下所示,
size price
3X3 3000
1X3 1000
2X3 2500
3X3 5000
更优化的解决方案是使用第4行。
答案 0 :(得分:3)
可以通过dynamic programming解决,首先找到最佳1X1
,然后最好2X1
来自最佳1X1
或一个2X1
。最好2X2
来自两个最佳2X1
或一个2X2
并且......您只需保存最佳xXy
块并继续计算,3X1
然后3X2
然后最后获得最佳3X3
。
答案 1 :(得分:0)
您可以在此处获取解决方案https://github.com/loganathan-s/lucarative_ad(以RUBY编写)