C++信息学奥赛1186:出现次数超过一半的数

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin >> n; // 输入一个整数n

    int arr[n]; // 定义一个长度为n的整型数组
    for (int i = 0; i < n; i++)
    {
        cin >> arr[i]; // 输入数组元素
    }

    int a, max; // 定义变量a和max
    max = a = 0; // 初始化max和a为0

    for (int i = 0; i < n; i++)
    {
        a = 0; // 初始化a为0

        for (int j = 0; j < n; j++)
        {
            if (arr[i] == arr[j]) // 如果当前元素与内层循环中的元素相等
            {
                a++; // 统计相同元素数量
            }
        }

        int half;
        if (n % 2 == 1) // 如果n为奇数
        {
            half = n / 2 + 1; // 则取中间位置的索引值
        }
        else // 如果n为偶数
        {
            half = n / 2; // 则取中间位置靠前的索引值
        }

        if (half <= a) // 如果相同元素数量大于等于中间位置索引值
        {
            cout << arr[i]; // 输出结果为该元素
            return 0; // 结束程序
        }
    }

    cout << "no"; // 如果没有满足条件的元素,则输出"no"
}

这段代码的作用是判断给定的整数数组中是否存在出现次数超过一半的元素。首先,通过循环输入整数数组的元素。然后,通过两层循环遍历数组,外层循环逐个元素进行统计,内层循环计算当前元素在数组中出现的次数。在内部循环中,如果发现有元素出现次数超过了数组长度的一半(取整),则输出该元素并结束程序。如果没有满足条件的元素,则输出"no"。

相关推荐
kyle~几秒前
JNI与JNA ---打通Java服务端与C++机器人系统的通信链路
java·c++·机器人
敏编程4 分钟前
一天一个Python库:soupsieve - CSS 选择器在 Beautiful Soup 中的力量
开发语言·css·python
王老师青少年编程5 分钟前
信奥赛C++提高组csp-s之组合数学专题课:卡特兰数
c++·组合数学·卡特兰数·csp·信奥赛·csp-s·提高组
闻道且行之6 分钟前
C/C++ HTTP 服务:常用方法与实现方式全解析
c语言·c++·http·libhv·curl·mongoose·libcurl
马士兵教育12 分钟前
AI大模型教程【LangChainV1.0+LangGraph V1.0】企业级Agent全集开发实战!
开发语言·人工智能·考研·面试·职场和发展
superantwmhsxx14 分钟前
JAVA系统中Spring Boot 应用程序的配置文件:application.yml
java·开发语言·spring boot
智者知已应修善业15 分钟前
【C++非递归剪枝问题凑钱方案数】2024-7-18
c语言·c++·经验分享·笔记·算法·剪枝
郝学胜-神的一滴16 分钟前
Pytorch张量核心运算精讲:从类型转换到数值操作全解析
开发语言·人工智能·pytorch·python·深度学习·程序人生·机器学习
BigLeo16 分钟前
c++中,声明(Declaration)与定义(Definition)有什么不同?
c++
Yolo_TvT18 分钟前
C++:缺省参数
开发语言·c++·算法