蓝桥杯算法日常|枚举[*找到最多的数]

news2025/3/1 18:19:15

**找到最多的数**

重点疑问总结:

1、数组输入输出c++一般会采用那种方便的方式??

用的就是我想的那种,就是用的最大范围定义的。

2、怎样方便给数组中每个数出现的次数计数??

刚开始想的是:每个数把全部的数比较一下子

最后发现最佳方法是:哈希表,这里用了一个数组,数组下标表示统计的哪个数,数组的值是该数出现的次数。

题目截图 

解题思路:

  1. 遍历矩阵,将每个数字及其出现次数存储在一个哈希表(这里使用数组模拟哈希表)中。
  2. 遍历哈希表,找到出现次数超过矩阵元素总数一半的数字。

C语言代码实现:

#include <stdio.h> 

// 定义矩阵最大行数和列数的常量
#define MAX_SIZE 1000 
#define MAX_NUM 1000 

int main() { 
    // 用于存储矩阵的行数和列数
    int n, m; 
    // 从标准输入读取矩阵的行数和列数
    scanf("%d %d", &n, &m); 

    // 定义二维数组(矩阵),其大小由输入的n和m决定
    int matrix[n][m]; 
    // 嵌套循环,外层循环遍历行,内层循环遍历列
    for (int i = 0; i < n; i++) { 
        for (int j = 0; j < m; j++) { 
            // 从标准输入读取矩阵每个元素的值
            scanf("%d", &matrix[i][j]); 
        } 
    } 

    // 定义哈希表(这里用数组模拟),用于统计每个数字出现的次数,初始化为0
    int hashTable[MAX_NUM] = {0}; 
    // 嵌套循环,遍历矩阵的每个元素
    for (int i = 0; i < n; i++) { 
        for (int j = 0; j < m; j++) { 
            // 对应数字在哈希表中的计数加1,表示该数字出现了一次
            hashTable[matrix[i][j]]++; 
        } 
    } 

    // 计算矩阵的总元素个数
    int totalElements = n * m; 
    // 遍历哈希表
    for (int i = 0; i < MAX_NUM; i++) { 
        // 如果某个数字出现的次数大于总元素个数的一半
        if (hashTable[i] > totalElements / 2) { 
            // 输出这个数字
            printf("%d\n", i); 
            // 程序结束并返回0,表示正常结束
            return 0; 
        } 
    } 

    // 如果没有找到符合条件(出现次数大于总元素个数一半)的数字,输出提示信息
    printf("No such number\n"); 
    return 0; 
}

上述代码首先读取矩阵的行数和列数,然后读取矩阵的元素。接着使用一个数组hashTable来统计每个数字出现的次数。最后遍历hashTable,找到出现次数超过矩阵元素总数一半的数字并输出。如果没有找到这样的数字,则输出No such number

请注意,这里假设矩阵中的数字范围较小(不超过MAX_NUM),如果数字范围较大,可能需要使用更高效的哈希表数据结构,如unordered_map(如果使用C++)或其他更复杂的哈希实现(如果仅使用C)。此外,上述代码没有进行输入数据的合法性检查,在实际应用中可能需要添加相应的检查以确保程序的健壮性。

解题思路:

  1. 遍历矩阵,将每个元素放入一个unordered_map中,key为矩阵元素的值,value为该元素出现的次数。
  2. 遍历unordered_map,找到出现次数超过矩阵元素总数一半的元素并返回。

C++代码实现:

#include <iostream> 
#include <unordered_map> 
using namespace std; 

// 主函数,程序的入口点
int main() { 
    // 定义两个整数n和m,用于接收输入
    int n, m; 
    // 从标准输入读取n和m的值
    cin >> n >> m; 
    // 计算矩阵的总元素个数
    int totalElements = n * m; 
    // 创建一个无序映射(哈希表),用于存储数字及其出现的次数
    unordered_map<int, int> countMap; 
    // 外层循环,遍历n行
    for (int i = 0; i < n; i++) { 
        // 内层循环,遍历m列
        for (int j = 0; j < m; j++) { 
            // 定义一个整数num,用于接收输入的数字
            int num; 
            // 从标准输入读取一个数字
            cin >> num; 
            // 在countMap中查找num,如果不存在则插入并将其出现次数设为1,
            // 如果存在则将其出现次数加1
            countMap[num]++; 
        } 
    } 
    // 遍历countMap中的每一个键值对
    for (auto& pair : countMap) { 
        // 如果某个数字的出现次数大于总元素个数的一半
        if (pair.second  > totalElements / 2) { 
            // 输出这个数字
            cout << pair.first  << endl; 
            // 结束程序,返回0
            return 0; 
        } 
    } 
    // 如果没有找到出现次数大于总元素个数一半的数字,返回0
    return 0; 
}

上述代码首先读取矩阵的行数n和列数m,然后通过两层循环遍历矩阵,将每个元素放入unordered_map中统计出现次数。最后再次遍历unordered_map,找到出现次数超过一半的元素并输出。如果没有找到这样的元素,程序正常结束。

请注意,此代码假设输入的矩阵元素都是正整数,并且一定存在一个出现次数超过一半的数字。如果输入不满足这些条件,可能需要添加额外的错误处理代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2278815.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker安装PostGreSQL docker安装PostGreSQL 完整详细教程

Docker安装PostGreSQL docker安装PostGreSQL 完整详细教程 Docker常用命令大全Docker 运行命令生成Docker 上安装 PostGreSQL 14.15 的步骤&#xff1a;1、拉取 PostGreSQL 14.15 镜像2、创建并运行容器3、测试连接4、设置所有IP都可以运行连接进入容器内 修改配置文件关闭容器…

基于机器学习随机森林算法的个人职业预测研究

1.背景调研 随着信息技术的飞速发展&#xff0c;特别是大数据和云计算技术的广泛应用&#xff0c;各行各业都积累了大量的数据。这些数据中蕴含着丰富的信息和模式&#xff0c;为利用机器学习进行职业预测提供了可能。机器学习算法的不断进步&#xff0c;如深度学习、强化学习等…

Go 语言 select 的实现原理

介绍 select是Go在语言层面提供的I/O多路复用的机制&#xff0c;其专门用来让Goroutine同时等待多个channel是否准备完毕:可读或可写。在Channel状态改变之前&#xff0c;select会一直阻塞当前线程或者goroutine。 特性&#xff1a; case 必须是一个通信操作&#xff0c;主要是…

Java 视频处理:基于 MD5 校验秒传及 ffmpeg 切片合并的实现

本文介绍两种网络技术实现方法。一是 MD5 校验秒传&#xff0c;服务器端用数据库记上传文件 MD5 值及存储路径&#xff0c;Java 代码接收客户端 MD5 值并查询校验&#xff0c;返回状态码。二是用 ffmpeg 切片视频成 m3u8 上传&#xff0c;异步合并文件实现视频按需加载。 1. …

一文读懂iOS中的Crash捕获、分析以及防治

Crash系统性总结 Crash捕获与分析Crash收集符号化分析 Crash类别以及解法分析子线程访问UI而导致的崩溃unrecognized selector send to instance xxxKVO crashKVC造成的crashNSTimer导致的Crash野指针Watch Dog超时造成的crash其他crash待补充 参考文章&#xff1a; 对于iOS端开…

RK3576 Android14 状态栏和导航栏增加显示控制功能

问题背景&#xff1a; 因为RK3576 Android14用户需要手动控制状态栏和导航栏显示隐藏控制&#xff0c;包括对锁屏后下拉状态栏的屏蔽&#xff0c;在设置功能里增加此功能的控制&#xff0c;故参考一些博客完成此功能&#xff0c;以下是具体代码路径的修改内容。 解决方案&…

【Rust自学】13.5. 迭代器 Pt.1:迭代器的定义、iterator trait和next方法

13.5.0. 写在正文之前 Rust语言在设计过程中收到了很多语言的启发&#xff0c;而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。 在本章中&#xff0c;我们会讨论 Rust 的一…

LabVIEW 蔬菜精密播种监测系统

在当前蔬菜播种工作中&#xff0c;存在着诸多问题。一方面&#xff0c;播种精度难以达到现代农业的高标准要求&#xff0c;导致种子分布不均&#xff0c;影响作物的生长发育和最终产量&#xff1b;另一方面&#xff0c;对于小粒径种子&#xff0c;传统的监测手段难以实现有效监…

2024年年终总结——坎坷与坚持,焦虑与收获

不知不觉间&#xff0c;2024年已经悄然过去&#xff0c;回望这一年的时间&#xff0c;一时间竟感觉混混沌沌无法形容&#xff0c;选择一些时间坐下来让自己简单回忆一下自己的2024。 先简单回望一下24年一整年的工作情况&#xff1a; 24年一开始&#xff0c;工作最期待的的节点…

无人机技术架构剖析!

一、飞机平台系统 飞机平台系统是无人机飞行的主体平台&#xff0c;主要提供飞行能力和装载功能。它由机体结构、动力装置、电气设备等组成。 机体结构&#xff1a;无人机的机身是其核心结构&#xff0c;承载着其他各个组件并提供稳定性。常见的机身材料包括碳纤维、铝合金、…

springboot基于微信小程序的传统美食文化宣传平台小程序

Spring Boot 基于微信小程序的传统美食文化宣传平台 一、平台概述 Spring Boot 基于微信小程序的传统美食文化宣传平台是一个集传统美食展示、文化传承、美食制作教程分享、用户互动交流以及美食相关活动推广为一体的综合性线上平台。它借助 Spring Boot 强大的后端开发框架构…

Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅

引言&#xff1a;音浪太强&#xff0c;我稳如老 HAL&#xff01; 如果有一天你的耳机里传来的不是《咱们屯里人》&#xff0c;而是金属碰撞般的杂音&#xff0c;那你可能已经感受到了 Android 音频硬件抽象层 (HAL) 出问题的后果&#xff01;在 Android 音频架构中&#xff0c…

51.WPF应用加图标指南 C#例子 WPF例子

完整步骤&#xff1a; 先使用文心一言生成一个图标如左边使用Windows图片编辑器编辑&#xff0c;去除背景使用正方形&#xff0c;放大图片使图标铺满图片使用格式工程转换为ico格式&#xff0c;分辨率为最大 在资源管理器中右键项目添加ico类型图片到项目里图片属性设置为始终…

运行fastGPT 第四步 配置ONE API 添加模型

上次已经装好了所有的依赖和程序。 下面在网页中配置One API &#xff0c;这个是大模型的接口。配置好了之后&#xff0c;就可以配置fastGPT了。 打开 OneAPI 页面 添加模型 这里要添加具体的付费模型的API接口填进来。 可以通过ip:3001访问OneAPI后台&#xff0c;**默认账号…

道旅科技借助云消息队列 Kafka 版加速旅游大数据创新发展

作者&#xff1a;寒空、横槊、娜米、公仪 道旅科技&#xff1a;科技驱动&#xff0c;引领全球旅游分销服务 道旅科技 &#xff08;https://www.didatravel.com/home&#xff09; 成立于 2012 年&#xff0c;总部位于中国深圳&#xff0c;是一家以科技驱动的全球酒店资源批发商…

51单片机——DS18B20温度传感器

由于DS18B20数字温度传感器是单总线接口&#xff0c;所以需要使用51单片机的一个IO口模拟单总线时序与DS18B20通信&#xff0c;将检测的环境温度读取出来 1、DS18B20模块电路 传感器接口的单总线管脚接至单片机P3.7IO口上 2、DS18B20介绍 2.1 DS18B20外观实物图 管脚1为GN…

Redis的安装和配置、基本命令

一、实验目的 本实验旨在帮助学生熟悉Redis的安装、配置和基本使用&#xff0c;包括启动Redis服务、使用命令行客户端进行操作、配置Redis、进行多数据库操作以及掌握键值相关和服务器相关的命令。 二、实验环境准备 1. JAVA环境准备&#xff1a;确保Java Development Kit …

2、ansible的playbook

ansible的脚本&#xff1a;playbook剧本 脚本的作用&#xff1a;复用 playbook的组成部分 1、开头 ---&#xff1a;表示是一个yaml文件&#xff0c;但是可以忽略。 2、Tasks&#xff08;任务&#xff09;&#xff1a;包含了目标主机上执行的操作&#xff0c;操作还是由模板来…

vscode的安装与使用

下载 地址&#xff1a;https://code.visualstudio.com/ 安装 修改安装路径&#xff08;不要有中文&#xff09; 点击下一步&#xff0c;创建桌面快捷方式&#xff0c;等待安装 安装中文插件 可以根据自己的需要安装python和Jupyter插件

Java : 各版本 jdk 下载及环境变量配置

--------------------------一、 JDK下载 ---------------------------- JDK下载地址&#xff1a;&#xff08;没有账号提示注册&#xff0c;最好用Chrome 浏览器&#xff09; Java Archive | Oracle 选择版本安装&#xff1a;&#xff08;注意不同系统&#xff09; 下载后按照…