完美的代价(贪心算法)

贪心算法:所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。

思路:从问题的某一个初始解出发一步一步地进行,根据某个优化测度,每一步都要确保能获得局部最优解。若下一个数据和部分最优解连在一起不再是可行解时,就不把该数据添加到部分解中,直到把所有数据枚举完,或者不能再添加算法停止。如果贪婪算法正确工作,那么找到的第一个解通常是最优的。

应用:
完美的代价(贪心算法)_第1张图片

思路:

1.首先判断IMPOSSIBLE的情况
主要分为两种情况:出现2个及以上的奇数个数 & 出现一个奇数但是字符串长度为偶数

2.字符与字符的交换,可以看作是字符的移动。那么相同的字符,为了求得最少的步骤,我们要保证他们的移动方向是一致的,否则比如一个往右移动4位,另一个往左移动2位,其实就是往右移动了两位。
所以我们从字符串的第一位开始,从右往左遍历,看是否有和它相同的字符。如果找到了,下一次就不用管他们了,遍历的end-1;下一次为字符串第二位寻找,从倒数第二位开始遍历。
(这一步应该是贪心思想的应用,遍历的时候找到相同的字符,换就完

你可能感兴趣的:(蓝桥杯)