牛客网NC22015:最大值和最小值

[复制链接]
发表于 2025-8-29 23:33:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
牛客网NC22015:最大值和最小值

题目描述


题目要求

输入:一行,包含三个整数 a, b, c (1≤a,b,c≤1000000)
输出:两行,第一行输出最大数,第二行输出最小数。
样例输入:
  1. 1 2 3
复制代码
样例输出:
  1. The maximum number is : 3
  2. The minimum number is : 1
复制代码
解题思路

这道题目要求我们找出三个数中的最大值和最小值。解题思路非常直接:

  • 初始化最大值和最小值为第一个数 a
  • 将第二个数 b 与当前最大值比较,如果 b 更大,则更新最大值;否则,与当前最小值比较,如果 b 更小,则更新最小值
  • 将第三个数 c 与当前最大值比较,如果 c 更大,则更新最大值
  • 将第三个数 c 与当前最小值比较,如果 c 更小,则更新最小值
  • 按照要求格式输出最大值和最小值
这种方法的时间复杂度是 O(1),空间复杂度也是 O(1),对于只有三个数的情况非常高效。
代码实现
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4.     int a, b, c, max, min;
  5.    
  6.     // 读取三个整数
  7.     cin >> a >> b >> c;
  8.    
  9.     // 初始化最大值和最小值为第一个数
  10.     max = a;
  11.     min = a;
  12.    
  13.     // 处理第二个数
  14.     if(b >= max)
  15.         max = b;
  16.     else
  17.         min = b;
  18.    
  19.     // 处理第三个数(最大值)
  20.     if(c >= max)
  21.         max = c;
  22.    
  23.     // 处理第三个数(最小值)。注意这两个判断是独立的,因为 c 可能既不是最大值也不是最小值
  24.     if(c < min)
  25.         min = c;
  26.         
  27.     // 按要求格式输出结果
  28.     printf("The maximum number is : %d\n", max);
  29.     printf("The minimum number is : %d", min);
  30.    
  31.     return 0;
  32. }
复制代码
代码分析


  • 头文件引入:#include<bits/stdc++.h> 包含了 C++ 标准库中常用的所有头文件,在比赛中常用于简化代码。
  • 变量定义:定义了五个整型变量 a, b, c 用于存储输入的三个数,max 和 min 分别用于记载最大值和最小值。
  • 初始化:将 max 和 min 都初始化为第一个数 a,这是一个常见的初始化本领。
  • 处理第二个数:

    • 如果 b 大于等于当前最大值,则更新最大值为 b
    • 否则,说明 b 小于 a,更新最小值为 b(因为此时 min=a,而 b<a)

  • 处理第三个数:

    • 先判断 c 是否大于等于当前最大值,如果是则更新最大值
    • 再判断 c 是否小于当前最小值,如果是则更新最小值
    • 留意这两个判断是独立的,因为 c 可能既不是最大值也不是最小值

  • 输出结果:使用 printf 函数按照题目要求的格式输出最大值和最小值。
算法优化点

这个算法已经非常简洁高效,对于只有三个数的情况,无法再进一步优化时间和空间复杂度。不过,如果处理的是恣意数量的数据,我们可以使用更通用的方法,如:

  • 使用库函数 std::max() 和 std::min()
  • 对于多个数的情况,可以使用循环或算法库中的 std::max_element() 和 std::min_element()
总结

这道题目固然简朴,但它展示相识决最值题目的基本思路。在实际编程中,找最值是一个非常常见的操作,把握这种底子算法对于办理更复杂的题目非常有帮助。
另外,本题也体现了步伐计划中的一个紧张思想:通过公道的初始化和条件判断,可以减少冗余操作,进步代码服从。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表