2017-08-12 54 views
2

我有两个数组 - 一个表示音阶的音符(以MIDI音符数字),另一个表示用户对乐器记录的音符的原始输入。比较音阶音符的两个阵列

这两个数组都是Ints列表,代表音符。例如:

[60,62,64,65,67,69,71,72,71,69,67,65, 60]

和由用户的输入生成的可以是具有两个非匹配和匹配数的整数中的任何列表中的阵列:

[60,61,62,25,64,65,67,67, 69,25,71 ...等等。

我需要找出两两件事:

  1. 如果用户输入数组包含测试阵列
  2. 在所有号码如果匹配的数字是正确的顺序

我基本上试图找出多少笔记可以被认为是“正确的”,并且使用这两个数组的内容可以考虑多少笔记可以被认为是错误。

我试了几件事情无济于事,但想知道是否有一种简单的方法来解决这个问题。

+1

好问题。我会想象,确定音符序列之间距离的问题已经被研究。你做过文献检索吗?这样的事情可能是相关的(虽然也许是矫枉过正):http://www.wseas.org/multimedia/journals/information/2013/f025709-275.pdf –

回答

2

这与比较两个字符串有多相似的问题类似(毕竟,字符串只是字符数组,可以用数字表示)。虽然确定两个阵列之间的距离有许多不同的算法,但使用最广泛的算法之一是Levenshtein distance。你可以找到如何实现它的描述here

+0

酷,我有一种感觉,该解决方案将需要一些递归该方法。感谢您指导我 - 如果它在这种情况下有效,我会试试并接受您的答案。 – chmod