1 条题解

  • 0
    @ 2026-6-19 10:30:18

    📝 题目大意

    给定 NN 座桥的高度 H1,H2,,HNH_1, H_2, \ldots, H_N,所有高度互不相同。找出最高的桥是第几座,输出其编号。

    💡 解题思路

    1. 题目分析N100N \leq 100,数据范围很小,且所有 HiH_i 互不相同,意味着最高值唯一,不存在并列情况。
    2. 算法推导:从 i=1i = 1NN 遍历,维护 maxH(当前遇到的最大高度)和 ans(最大高度对应的编号)。每当读入的 hh 大于 maxH 时,更新 maxHans。遍历结束后输出 ans 即可。
    3. 边界与细节:当 N=1N = 1 时,唯一的那座桥本身就是最高的,循环会正确地将 ans 设为 11。注意编号从 11 开始而非 00

    ⏱️ 复杂度分析

    • 时间复杂度O(N)O(N),仅需一次遍历。
    • 空间复杂度O(1)O(1),只使用了常数个变量。

    💻 标准代码 (C++)

    #include<bits/stdc++.h>
    using namespace std;
    int main() {
        int N, h, maxH = 0, ans = 0;
        cin >> N;
        // 遍历 N 座桥,编号从 1 开始
        for (int i = 1; i <= N; i++) {
            cin >> h;
            // 如果当前桥的高度大于已记录的最大高度,则更新最大值和答案
            if (h > maxH) {
                maxH = h;
                ans = i;
            }
        }
        // 输出最高桥的编号
        cout << ans << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    647
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者