【问题标题】:I need help constructing an algorithm to display certain types of content我需要帮助构建一种算法来显示某些类型的内容
【发布时间】:2021-09-14 19:24:56
【问题描述】:

我有 (2) 种可以出现在页面上的内容。

  1. “相关内容”=R
  2. 复制 = C

--

R 和 C 的数量每页是可变的。所以你可能有以下条件: R = 10 C = 3

R = 2 C = 12

R = 4 C = 5

等等等等

不过,正常情况可能是: R = (3 --> 7) C = (5 --> 8)

我会假设 90% 的时间它会落在那个范围内

--

我正在尝试编写一种算法来排序内容在页面上的呈现方式,以实现 (R) 和 (C) 之间的平衡。

规则:

  1. 必须始终先出现 (C) 的单位。
  2. 尽量避免以 (C) 结尾
  3. 对于不能均分的列表,把多余的“权重”放在中间

一些理想的内容分布示例:

案例 1:(R=2,C=8) 结果: C,C,C,R,C,C,C,R,C,C

案例 2:(C=6,R=4) 结果: C,R,C,R,C,C,R,C,R,C

案例 3:(C=2。R=6) 结果: C,R,R,R,C,R,R,R

这一般是我想要实现的分布

我在构建算法或其他方法以根据我的规则和预期结果正确排序时遇到困难。我“一看到就知道”,但我发现很难将其转换为数学方程式。希望有大神指点一下

【问题讨论】:

    标签: arrays list algorithm sorting arraylist


    【解决方案1】:

    您可以将其视为一个整数画线问题:您希望从(0,0)(R,C) 的线尽可能窄;我们不是在xy 之间做出选择,而是在rc 之间做出选择。 Bresenham's line algorithm 是一种仅用于绘制精确线条的整数方法,非常适合您的插值。只有两种情况,RC 更大。不要将初始y 设置为平衡,而是将其一直设置到一侧(这取决于rcxy 的映射);这将使C 永远是第一。你可以根据最后的 C 的不受欢迎程度对其进行一些调整,但如果C 的数量不超过R,我们自然会在最后有R

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      • 2018-06-08
      相关资源
      最近更新 更多