【发布时间】:2019-04-02 09:32:35
【问题描述】:
我希望将数组缩放到给定的长度。
第一个数组 [A] 仅包含 0 和 1 值,并且具有恒定大小,例如 8。
另一方面,我有一个可变长度的数组 [B],具体取决于程序的操作。我想逐个索引比较两个索引。数组 [A] 可以理解为模式,而 B 是随时间拉伸的数据。结果是模式和数据之间的差异
A = [0 1 0 1 1 0 0 1]
B = [0 0 1 1 0 0 1 0 0 0 1]
以下情况: B.size % A.size == 0 很简单,但我不能假设。
我想到的第一个解决方案是找到最小的公倍数并将两个表都缩放到它,但我担心它会非常低效。
我正在寻找一种解决方案,以尽可能准确地将 [A] 缩放到 [B] 的大小。我用 c ++ 编写程序,但我会感谢所有提示。
【问题讨论】:
-
如果您从右到左方向,您仍然可以比较“数组”。否则将
A复制到一个新的“数组”(向量?)并添加前导零,直到长度与B相同。 -
我不使用向量。如果长度之间的差异很大,例如 8 和 999,则此解决方案将不会通过。在最好的简单情况下,
A = [0, 1] B = [0 ,0 ,0, 1, 1, 1]程序应该返回数组之间没有差异。 -
上述评论示例中
B = [0 ,0 ,0, 1, 1, 1, 0]时的o/p是什么? -
好吧,您似乎有矛盾的要求:您不能在“保留值”的同时缩放数据。另外,您说
B(在您的示例中)是“随着时间的推移拉伸的数据”(强调我的)。这个拉伸是怎么做的?您不能立即应用这种拉伸而不是“随着时间的推移”进行吗? -
@SparKot 这是使用什么方法来保持高精度的问题。在这种情况下,程序可以返回差异 = 1,但我关心的是忠实地找到一个模式