-3

誰かが最も長い平らなサブセクションを教えてもらえますか?

4

1 に答える 1

2

配列a[0:n)(n≧0)が与えられた場合、そのサブセクションa [p、q)(0≦p≦q≦n)は、∀i、j:p≦i≦j <qの場合、「フラット」と呼ばれます。 :a [i] =a[j]。

「シーケンス内のすべての要素が互いに等しい場合にのみ、サブシーケンスはフラットと見なされます」として英語に変換されます。平等は推移的、反射的、対称的であるため、次のように見つけることができます。

pre: a is a sequence of symbols
     n is its length

last = null
bestAt = null
bestLen = -1
for each i in 0..n-1
  if a[i] != last
    thisAt = i
    thisLen = 1
    last=a[i]
    if thisLen > bestLen
      bestLen = thisLen
      bestAt = thisAt
  else
    thisLen++
  last=a[i]

post: a is not modified
      n is not modified
      bestAt holds the position of the first longest subsequence
      bestLen holds the length of the first longest subsequence
于 2012-11-19T10:13:19.693 に答える