谁来帮帮我啊
查看原帖
谁来帮帮我啊
1260108
yangshihuanhhh楼主2024/7/5 19:20
#include <bits/stdc++.h>
using namespace std;

int cup[100001];

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> cup[i];
    }

    bool y = true;
    int ans = 0; // 统计交换数量

    while (y) {
        int t1 = -1, t2 = -1; // 混乱的两个瓶子的位置
        bool ask = true;     // 当前序列是否有序

        for (int i = 1; i <= n - 1; i++) {
            if (cup[i] > cup[i + 1]) { // 如果存在逆序对
                ask = false;
                if (t1 == -1) {
                    t1 = i;
                } else {
                    t2 = i + 1;
                }
            }
        }

        y = !ask; // 更新是否有序的状态

        if (t1 != -1 && t2 != -1) { // 如果找到逆序对
            swap(cup[t1], cup[t2]);
            ans++; // 增加交换次数
        }
    }

    cout << ans;
    return 0;
}
2024/7/5 19:20
加载中...