MC0301 数字大王(C++)

题目

        小码哥正在和他的小伙伴们在进行一场编程比赛。这场比赛的主题是“寻找数字大王”,旨在考验各位参赛者对数据的洞察力和编程能力。比赛的规则十分简单:有一个包含𝑛个整数的数列,参赛者需要编写一个程序,从这些数字中找出最大的那个数,称其为“数字大王”。他知道,这不仅仅是一次技术上的挑战,更是一次速度的较量,小马哥深吸一口气,开始了他的操作。

格式
        输入格式:第一行一个整数𝑛;
                          第二行n个不超过1000的正整数。
        输出格式:一行一个整数,表示输入的𝑛个正整数的最大值。
样例 1
        输入:5
                   8 5 9 6 3
        输出:9
其中:0<𝑛≤10000
           0<n≤10000

题解

1.定义数组

vector<int> numbers(n);   //声明并初始化了一个名为 numbers 的整数向量(动态数组),其核心作用是存储用户输入的 n 个正整数。
1. vector 是什么?
vector 是 C++ 标准库中的动态数组容器,位于 <vector> 头文件中。与普通数组相比,它的优势在于:动态大小:可在运行时调整长度;自动内存管理:无需手动分配 / 释放内存;丰富的成员函数:如 push_back、size、max_element 等。
2. vector<int> numbers(n); 的含义
① 声明向量:
vector<int> numbers;  // 声明一个存储int类型的向量

② 初始化大小:
通过参数 (n) 指定向量的初始大小为 n,即预分配 n 个元素的空间:
vector<int> numbers(n);  // 创建包含n个元素的向量

此时,numbers 中包含 n 个初始值为 0 的整数(默认初始化)。

2.核心

// 方法1:使用STL的max_element函数
    int max_value = *max_element(numbers.begin(), numbers.end());//查找并返回向量 numbers 中的最大值

1.max_element 函数概述:
所属头文件:<algorithm>
功能:在指定范围内查找第一个最大值元素的迭代器
函数原型:
template<class ForwardIt>
ForwardIt max_element(ForwardIt first, ForwardIt last);

template<class ForwardIt>:声明这是一个函数模板,ForwardIt 是模板参数,表示前向迭代器类型。
ForwardIt max_element(...):返回类型为 ForwardIt,即一个指向最大值的迭代器。

参数:
first:起始迭代器(包含)
last:结束迭代器(不包含)
2. 关键部分解析
① numbers.begin() 和 numbers.end()
numbers.begin():返回指向向量第一个元素的迭代器
numbers.end():返回指向向量最后一个元素之后位置的迭代器(即 “超尾” 迭代器)
② max_element(...)
在 [numbers.begin(), numbers.end()) 范围内查找最大值
返回一个迭代器,指向找到的最大值元素
③ *max_element(...)
解引用迭代器:将迭代器转换为它指向的值
例如,若最大值是 89,则 *max_element(...) 返回 89

// 方法2:手动遍历寻找最大值
    int max_value = numbers[0];
    for (int i = 1; i < n; i++) {
        if (numbers[i] > max_value) {
            max_value = numbers[i];
        }
    }

代码

#include<bits/stdc++.h> 
#include<iostream>
#include<algorithm>
using namespace std;

int main( )
{
    int n;
    cin>>n;
    vector<int> nums(n);
    for (int i=0;i<n;i++){
        cin>>nums[i];
    }
    int max_value=*max_element(nums.begin(),nums.end());
    cout<<max_value;
    return 0;
}
#include<bits/stdc++.h> 
#include<iostream>
using namespace std;

int main( )
{
    int n;
    cin>>n;
    vector<int> nums(n);
    for (int i=0;i<n;i++){
        cin>>nums[i];
    }
    int max_value=nums[0];
    for(int j=1;j<n;j++){
        if(nums[j]>max_value){
            max_value=nums[j];
        }
    }
    cout<<max_value;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值