top1编程
← 返回题目
题解

三个数中最大的数

1 条题解

  • 0
    @ 2026-8-4 10:20:43

    解题思路

    要在一堆数里找出最大的一个,最简单的办法是“打擂台”:先假设第一个数是“擂主”(当前最大值),然后让后面的数依次上台挑战,谁大谁就当新的擂主。最后留在台上的一定是最大的数。

    对于三个数 x、y、z,具体步骤如下:

    1. 先把 x 当作目前最大的数,存进变量 max 里;
    2. 让 y 上台挑战:如果 y > max,说明 y 更大,把 max 更新成 y;
    3. 让 z 上台挑战:如果 z > max,把 max 更新成 z;
    4. 比完所有数后,max 里存的就是三个数中的最大值。

    用“打擂台”的好处是思路统一、好记,以后即使有 100 个数,也可以用同样的套路,只要把挑战的步骤放进循环里就行。

    因为题目保证三个数互不相同,所以不用担心两个数相等的情况,用大于号 > 判断就足够了。

    参考代码

    #include using namespace std;

    int main() { int x, y, z; // x、y、z 表示输入的三个数 cin >> x >> y >> z; // 读入三个数

    int max = x;    // 先把第一个数 x 当作“擂主”(当前最大值)
    if (y > max) {  // 第二个数 y 上台挑战
        max = y;    // y 更大,让 y 当新的擂主
    }
    if (z > max) {  // 第三个数 z 再上台挑战
        max = z;    // z 更大,让 z 当新的擂主
    }
    
    cout << max << endl;  // 打完擂台,max 就是最大的数
    return 0;
    

    }

    复杂度分析

    本题固定只有 3 个数,程序做 2 次比较就能找出最大值,运算次数固定,与数的大小无关,时间复杂度是 O(1)。只用了 4 个 int 变量,空间复杂度也是 O(1)。如果以后要比较 n 个数,就需要用循环,时间复杂度会变成 O(n),但本题不需要。

    • 1