小编use*_*807的帖子

当我想选择尽可能充满容器的物品时它叫什么 - 我应该使用什么算法?

我有一个问题如下:

给你的物品类型的重量w1,w2,w3,.... wn; 这些类型的每个项目数量都是无限的.

你有一个能够承载重量W的容器.

找到适合容器的最大重量总和的项目组合,不超过最大重量W.

例如:

我有三种带有重量的物品:

  • w = 5
  • w = 10
  • w = 20

我有一个重量容量容器:W = 25

可能的解决方案是:

  • 5项w = 5,0项w = 10,0项w = 20;
  • 1项w = 5,0项w = 10,1项w = 20

我能够使用动态编程方法解决问题; 但是,我的问题是确定这类问题的名称以及用于解决问题的算法.尽管进行了广泛的搜索,我似乎无法用手指指着它.

对我来说,它类似于bin-packing问题,除了有限数量的bin,无限量的项目,并且在多项式时间内无法解决.可能是一个离散的背包,项目重量=项目利润和每个项目的无限数量?

algorithm math optimization

6
推荐指数
1
解决办法
546
查看次数

如何使用密钥获取列表的最小值/最大值

我目前有一个对象列表,每个对象都包含一个特定的属性.我想用min属性值获取列表元素.这样做有简洁的方法吗?

python等价物将是这样的: min(d, key=d.get)

有没有办法获得最小/最大N个元素?

lisp common-lisp

6
推荐指数
1
解决办法
1292
查看次数

将PySpark Dataframe中的一行拆分为多行

我目前有一个数据框,其中一列的类型为"abcde ...".将此列命名为"col4"

我想通过拆分col4的元素将一行拆分成多行,保留所有其他列的值.

因此,例如,给定单行的df:

col1 [0] | col2 [0] | col3 [0] | abc |

我希望输出为:

col1 [0] | col2 [0] | col3 [0] | a |

col1 [0] | col2 [0] | col3 [0] | b |

col1 [0] | col2 [0] | col3 [0] | c |

使用split和explode函数,我尝试了以下方法:

d = COMBINED_DF.select(col1, col2, col3, explode(split(my_fun(col4), " ")))
Run Code Online (Sandbox Code Playgroud)

但是,这会产生以下输出:

col1 [0] | col2 [0] | col3 [0] | abc |

col1 [0] | col2 [0] | col3 [0] | abc …

python apache-spark pyspark

5
推荐指数
1
解决办法
5246
查看次数