1 条题解

  • 0
    @ 2025-10-30 10:43:35

    思路分析

    1. 任务拆解:

    • 读取车厢数量n
    • 读取初始车厢顺序
    • 使用冒泡排序进行升序排列
    • 统计交换车厢的次数
    • 输出最少交换次数

    2. 关键点分析:

    • 每次只能交换相邻两节车厢,对应冒泡排序的交换操作
    • 冒泡排序的交换次数就是最少需要的步数
    • 使用ans变量累计每次交换操作
    • 题目本质是计算冒泡排序的交换次数

    3. 步骤规划: 第一步:读取车厢数量n 第二步:循环读取初始车厢顺序 第三步:进行冒泡排序 第四步:每次交换相邻车厢时计数器加1 第五步:输出总交换次数

    4. 代码对应:

    • cin>>n:读取车厢数量
    • 第一个for循环:输入初始车厢顺序
    • 外层for循环:控制排序趟数
    • 内层for循环:进行相邻比较和交换
    • if(a[j]>a[j+1]):如果顺序不对就交换
    • swap(a[j],a[j+1]):交换相邻车厢
    • ans++:交换次数计数器加1
    • cout<<ans:输出最少交换次数
    • 1

    信息

    ID
    1641
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    (无)
    递交数
    245
    已通过
    139
    上传者