Python 实现【高矮个子排队】

B站影视 内地电影 2025-03-26 16:33 1

摘要:def minimal_moves(heights):n = len(heights)if n 0 and

def minimal_moves(heights):n = len(heights)if n 0 and heights[i] 0 and heights[i] > heights[i-1]:# 需要交换heights[i], heights[i-1] = heights[i-1], heights[i]moves += 1return moves, heights# 读取输入heights = list(map(int, input.split))# 计算最小移动距离和排列后的顺序moves, sorted_heights = minimal_moves(heights.copy)# 输出结果print(' '.join(map(str, sorted_heights)))print(moves)理解排列模式:排列模式应为“高”“矮”“高”“矮”……交替进行。即奇数位置(1,3,…)的小朋友应比相邻的高或相等,偶数位置(2,4,…)的小朋友应比相邻的矮或相等。贪心算法:为了最小化移动距离,我们应尽量少交换相邻的小朋友,或者交换距离最近的小朋友。检查当前排列:遍历当前排列,检查每个位置是否符合“高”“矮”交替的条件。如果不符合,则找到最近的合适位置进行交换,并计算移动距离。

来源:勇往直前加油

相关推荐