誰かが最も長い平らなサブセクションを教えてもらえますか?
質問する
166 次
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 に答える