【发布时间】:2019-04-28 06:18:47
【问题描述】:
例如,我有两个列表
A = ["spin", "dab", "dab", "moonwalk", "clap", "moonwalk"]
B = ["dab", "dab", "spin", "clap", "clap", "moonwalk"]
合并两个列表后,我可以有一个这样的列表
remix=["dab", "spin", "dab", "spin", "dab", "clap", "dab", "moonwalk", "clap", "moonwalk", "clap", "moonwalk"]
我的问题是如何合并两个列表,使元素的相邻重复最小(A 和 B 中的所有元素都必须出现在混音列表中)。 重复是这样的
remix=["spin", "dab", "spin", "dab", "dab", "clap", "dab", "moonwalk", "clap", "moonwalk", "clap", "moonwalk"]
这里的相邻重复是2*dab
另一个例子是
remix=["spin", "dab", "spin", "dab", "dab", "clap", "clap","dab", "moonwalk", "moonwalk", "clap", "moonwalk"]
相邻的重复是2*dab+2*clap
下面是这个问题的输入
A = ["spin", "dab", "dab", "moonwalk", "clap", "moonwalk"]
B = ["dab", "dab", "spin", "clap", "clap", "moonwalk"]
factor={"spin":1,"dab":2,"moonwalk":3,"clap":4}
输出列表:
["dab", "spin", "dab", "spin", "dab", "clap", "dab", "moonwalk", "clap", "moonwalk", "clap", "moonwalk"]
原因是没有重复所以任何元素的相邻重复都是0。 同样,目标是找到具有最少相邻重复的列表,当然如果我们可以找到完全没有重复的列表,则因子可能为 0
我在考虑动态编程,但我不知道如何使它工作。任何帮助表示赞赏。
【问题讨论】:
-
使用
A + B组合列表A和B -
所以你想合并列表以尽量减少相邻重复?是对的吗?
dab, dab, clap是重复的,但spin, dab, spin不是? -
目标是找到最小的重复因子。如果没有重复,那么这是最好的解决方案,否则输出具有最小重复因子的列表
-
@Mark Meyer 完全正确。
-
请编辑您尝试将其编码到您的问题中。来吧,你一定尝试过什么。
标签: python algorithm dynamic-programming