去重求和(最大N个数和最小N个数的和)(C 语言)

news/发布时间2024/5/14 15:03:28

题目

给定一个数组,编写一个函数,
计算他的最大N个数和最小N个数的和,
需要对数组进行去重。

输入

第一行输入MM表示数组大小
第二行输入M个数,表示数组内容
第三行输入N表示需要计算的最大最小N的个数

输出

输出最大N个数和最小N个数的和

示例一

输入
5
95 88 83 64 100
2
输出
342
说明

最大2个数[100 95]最小 2 个数[83 64]
输出342

示例二

输入
5
3 2 3 4 2
2
输出
-1
说明

最大2个数是[4 3]最小2个数是[3 2]
有重叠输出为-1

思路

解题思路如下:

  1. 读取输入

    • 首先,程序读取数组的大小 M
    • 然后,依次读取并存储数组中的 M 个整数到动态数组 nums 中。
    • 接着,读取需要计算的最大最小数的数量 N
  2. 排序数组

    • 使用 qsort 函数对数组进行降序排序,以便后续可以快速找到最大和最小的数。
  3. 数组去重

    • 遍历已排序的数组,当遇到重复元素时,将其从数组中移除。通过更新数组长度来保持有效数据范围。
  4. 计算结果

    • 初始化结果变量 res-1,表示存在重复数字的情况下的输出结果。
    • 检查经过去重处理后的数组长度是否大于等于 2 * N。如果满足条件,则将结果初始化为 0 并重新计算。
    • 遍历数组,将位于数组两端(前 N 个和后 N 个)的数累加到结果变量 res 中。
  5. 输出结果

    • 输出最终计算得到的最大 N 个数和最小 N 个数的和。

代码

#include <stdio.h>
#include <stdlib.h>// 定义一个比较函数,用于对整数数组进行降序排序
int cmp(const void *a, const void *b) {return *(int *)b - *(int *)a; // 返回 b - a 的值,实现降序排列
}int main() {int length;scanf("%d", &length); // 读取数组长度 M// 初始化动态数组 nums,用于存储输入的整数int nums[length];for (int i = 0; i < length; i++) {scanf("%d", &nums[i]); // 读取数组中的每个元素}int n;scanf("%d", &n); // 读取需要计算的最大最小 N 的个数// 使用 qsort 函数对数组进行降序排序qsort(nums, length, sizeof(int), cmp);// 对排序后的数组进行去重操作for (int i = 0; i < length - 1;) {if (nums[i] == nums[i + 1]) { // 如果当前元素与下一个元素相等(即重复)// 将重复元素移除并将后续元素前移for (int j = i; j < length - 1; j++)nums[j] = nums[j + 1];length--; // 数组有效长度减一} else {i++; // 若无重复,则继续检查下一个元素}}// 计算去重后数组中最大 N 个数和最小 N 个数的和int res = -1; // 初始化结果为 -1,表示有重复时的结果if (n * 2 <= length) { // 如果要去重后数组长度大于等于 2Nres = 0;           // res置0,开始累加// 遍历数组,将前 N 个和后 N 个数累加到结果中for (int i = 0; i < length; i++) {if (i < n || i >= length - n) {res += nums[i];}}}printf("%d\n", res); // 输出最大 N 个数和最小 N 个数的和return 0;
}

文章目录

      • 题目
      • 输入
      • 输出
      • 示例一
        • 输入
        • 输出
        • 说明
      • 示例二
        • 输入
        • 输出
        • 说明
    • 思路
    • 代码

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

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

运维的利器–监控–zabbix–第二步:建设–部署zabbix agent

文章目录 监控客户端部署及添加主机一、在 zabbix-server 安装客户端二、在本机和其他linux主机安装zabbix agent客户端1、安装2、配置3、启动并开机自启4、添加主机创建主机组创建主机等一会或重启zabbix-server查看配置是否成功 三、在其他windows上安装zabbix agent客户端下…

蓝桥杯嵌入式第12届真题(完成) STM32G431

蓝桥杯嵌入式第12届真题(完成) STM32G431 题目 程序 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body**************************…

Android进阶(二十九) 走近 IntentFilter

文章目录 一、什么是IntentFilter &#xff1f;二、IntentFilter 如何过滤隐式意图&#xff1f;2.1 动作测试2.2 类别测试2.3 数据测试 一、什么是IntentFilter &#xff1f; 如果一个 Intent 请求在一片数据上执行一个动作&#xff0c; Android 如何知道哪个应用程序&#xf…

乐优商城(六)ElasticSearch搜索二

1.索引库数据导入 之前我们学习了Elasticsearch的基本应用。今天就学以致用&#xff0c;搭建搜索微服务&#xff0c;实现搜索功能。 1.1.创建搜索服务 创建module&#xff1a; Pom文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <…

计算机网络-无线通信网

1.各种移动通信标准 1G&#xff1a;第一代模拟蜂窝&#xff1a;频分双工FDD。2G&#xff1a;第二代数字蜂窝 I.GDM&#xff08;全球移动通信&#xff09;采用TDMA。II.CDMA&#xff08;码分多址通信&#xff09;。2.5G&#xff1a;第2.5代通用分组无线业务GPRS。2.75G&#xf…

【Python】2019年蓝桥杯省赛真题——完全二叉树的权值

蓝桥杯 2019 省 A&B&#xff1a;完全二叉树的权值 题目描述 给定一棵包含 N N N 个节点的完全二叉树&#xff0c;树上每个节点都有一个权值&#xff0c;按从上到下、从左到右的顺序依次是 A 1 , A 2 , ⋯ A N A_1,A_2, \cdots A_N A1​,A2​,⋯AN​&#xff0c;如下图所…

第10讲用户登录SpringSecurity查库实现

用户登录SpringSecurity查库实现 security包下新建MyUserDetailServiceImpl Service public class MyUserDetailServiceImpl implements UserDetailsService {AutowiredSysUserService sysUserService;Overridepublic UserDetails loadUserByUsername(String username) throw…

Matlab/simulink中性点经消弧线圈接地电网接地故障的建模仿真(4.4.3)

Matlab/simulink光伏发电的仿真&#xff08;持续更新&#xff09; 1.光伏发电的电导增量法MPPT仿真 2.光伏发电的恒定电压法MPPT仿真 3.光伏发电的扰动观察法MPPT仿真 4.光伏发电的占空比法MPPT仿真 5.基于神经网络的MPPT光伏发电仿真 6. 基于模糊控制的MPPT光伏发电仿真 …

Ansible概述和常用模块

目录 一、ansible概述 &#xff08;一&#xff09;基础知识 &#xff08;二&#xff09;特性 二、部署ansible &#xff08;一&#xff09;管理端安装 &#xff08;二&#xff09;ansible 目录结构 &#xff08;三&#xff09;配置主机清单 &#xff08;四&#xff09;…

设计模式四:适配器模式

1、适配器模式的理解 适配器模式可以理解为有两个现成的类Adaptee和Target&#xff0c;它们两个是不能动的&#xff0c;要求必须使用B这个类来实现一个功能&#xff0c;但是A的内容是能复用的&#xff0c;这个时候我们需要编写一个转换器 适配器模式 Adaptee&#xff1a;被适…

【漏洞复现】H3C 路由器多系列信息泄露漏洞

Nx01 产品简介 H3C路由器是一款高性能的路由器产品&#xff0c;具有稳定的性能和丰富的功能。它采用了先进的路由技术和安全机制&#xff0c;可以满足不同用户的需求&#xff0c;广泛应用于企业、运营商和数据中心等领域。 Nx02 漏洞描述 H3C路由器多系列存在信息泄露漏洞&…

C++进阶(十六)特殊类设计

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、请设计一个类&#xff0c;不能被拷贝二、请设计一个类&#xff0c;只能在堆上创建对象三、…

【spring】 ApplicationListener的使用及原理简析

文章目录 使用示例&#xff1a;原理简析&#xff1a; 前言&#xff1a;ApplicationListener 是spring提供的一个监听器&#xff0c;它可以实现一个简单的发布-订阅功能&#xff0c;用有点外行但最简单通俗的话来解释&#xff1a;监听到主业务在执行到了某个节点之后&#xff0c…

大模型训练流程(四)强化学习

1.为什么需要强化学习 强化学习的目的是在大模型指令微调后&#xff0c;让LLM的行为与人类“对齐”&#xff0c;使其能够理解人类指令并做出对人有帮助的回答&#xff0c;纠正错误和有害的知识。RLHF本质上是通过人类的反馈来优化模型&#xff0c;生成的文本会更加的自然。 具…

MATLAB Coder从入门到放弃

一、MATLAB Coder入门 1 MATLAB Coder是什么 从 MATLAB 代码生成 C 和 C 代码 MATLAB Coder™ 可从 MATLAB 代码生成适用于各种硬件平台&#xff08;从桌面计算机系统到嵌入式硬件&#xff09;的 C 和 C 代码。它支持大多数 MATLAB 语言和广泛的工具箱。您可以将生成的代码作…

【前端素材】推荐优质后台管理系统Minia平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;它通常作为一个独立的后台界面存在&#xff0c;供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能&#xff1a; 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

springboot+vue项目基础开发(13)vue的注册页面

1创建页面 在view下面创建Login.vue 编写login.vue的代码 <script setup> import {User,Lock} from @element-plus/icons-vue import {ref } from vue&#

亿道丨三防平板电脑厂商哪家好丨麒麟系统三防平板PAD

随着科技的飞速发展&#xff0c;人们对于移动设备的需求越来越高。然而&#xff0c;在不同的行业应用场景下&#xff0c;常规的智能平板往往无法满足特殊的工作要求。&#xff0c;亿道三防平板&#xff0c;将高可靠性与卓越性能高度结合&#xff0c;为各行各业提供卓越的移动解…

Python爬虫实战入门:爬取360模拟翻译(仅实验)

文章目录 需求所需第三方库requests 实战教程打开网站抓包添加请求头等信息发送请求&#xff0c;解析数据修改翻译内容以及实现中英互译 完整代码 需求 目标网站&#xff1a;https://fanyi.so.com/# 要求&#xff1a;爬取360翻译数据包&#xff0c;实现翻译功能 所需第三方库 …

Android14 InputManager-InputReader的处理

IMS启动时会调用InputReader.start()方法 InputReader.cpp status_t InputReader::start() {if (mThread) {return ALREADY_EXISTS;}mThread std::make_unique<InputThread>("InputReader", [this]() { loopOnce(); }, [this]() { mEventHub->wake(); });…
推荐文章