1 条题解

  • 0
    @ 2026-1-30 18:40:28
    #include <iostream>
    using namespace std;
    
    int main() {
        int n;                        // 比赛的总场数
        // [1] 输入比赛总场数n
        cin >> n;
        int arr[105];                 // 存储每场比赛获胜队伍的编号
        // [2] 循环输入n场比赛的获胜队伍编号,依次存入数组arr
        for (int i = 0; i < n; ++i) {
            cin >> arr[i];
        }
    
        // [3] 处理特殊情况:比赛场数小于2时,无连胜可能,直接结束程序
        if (n < 2) {
            return 0;
        }
    
        int current_team = arr[0];    // 记录当前正在连胜的队伍编号,初始为第一场获胜队伍
        int current_streak = 1;       // 记录当前队伍的连胜场次,初始为1(单场默认1场)
        // [4] 从第2场比赛开始遍历,对比当前场与上一场的获胜队伍
        for (int i = 1; i < n; ++i) {
            // [5] 若当前场获胜队伍与上一场一致,当前队伍连胜场次加1
            if (arr[i] == current_team) {
                current_streak++;
            } else {
                // [6] 若当前连胜场次≥2,输出该连胜队伍的编号和对应场次
                if (current_streak >= 2) {
                    cout << current_team << " " << current_streak << endl;
                }
                // [7] 切换连胜队伍,重置当前连胜队伍和连胜场次为当前场的信息
                current_team = arr[i];
                current_streak = 1;
            }
        }
    
        // [8] 处理最后一段连续获胜的队伍,避免循环结束后遗漏符合条件的连胜记录
        if (current_streak >= 2) {
            cout << current_team << " " << current_streak << endl;
        }
    
        return 0;
    }
    
    • 1

    信息

    ID
    1201
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者