Advertisement

二进制字符串交替出现的最少反转次数

阅读量:

一、问题

二、问题分析

这个问题与之前交换二进制字符串的情形极为相似。最初误以为类型二与之类似。经过详细分析后发现前者相比后者在操作步骤上更为简洁。

将问题抽象化为将字符串定义为从位置序列中选取连续整数排列的形式(记作S = [s_0, s_2, ..., s_{n-2}]),我们需要确定使该字符串达到目标所需的最小更改次数。第一步的操作定义为从位置序列中选择前k个元素并将其附加到后缀后面(即重组后的序列变为S' = [s_k, s_{k+}, ..., s_{n-2}, s_0, s_!, ..., s_{k-}])。在此过程中我们可以观察到中间部分S'' = [s_k+, ..., s_{n-} ]保持不变而仅改变了前缀部分S''' = [s_0+, ..., s_k+]的位置关系这一变化并不影响这一前缀部分内部所需进行的转换次数

首先,对于交替,我们有两种情况:[01.....],[10......]。

此外,在[k+1...n]区间内也存在上述两种情形,在[1...k]区间内同样包含上述两种情形。但是将[1...k]区间移

全部评论 (0)

还没有任何评论哟~