剩余银饰的重量(C语言)

题目描述

N 块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。 每一回合,从中选出三块 最重的 银饰,然后一起熔掉。假设银饰的重量分别为 xyz,且 x <= y <= z。那么熔掉的可能结果如下:

  • 如果x == y == z,那么三块银饰都会被完全熔掉;
  • 如果x == yy != z,会剩余重量为z - y的银块无法被熔掉;
  • 如果x != yy == z,会剩余重量为y - x的银块无法被熔掉;
  • 如果x != yy != z,会剩余重量为z - yy - x差值的银块无法被熔掉。

如果剩余两块,返回较大的重量(若两块重量相同,返回任意一块皆可);如果只剩下一块,返回该块的重量;如果没有剩下,就返回 0

输入描述

输入数据为两行

第一行为银饰数组长度 n1 ≤ n ≤ 40

第二行为 n 块银饰的重量,重量的取值范围为[1,2000],重量之间使用空格隔开

输出描述

如果剩余两块,返回较大的重量(若两块重量相同,返回任意一块皆可);如果只剩下一块,返回该块的重量;如果没有剩下,就返回 0

示例一

输入

3
1 1 1
12

输出

0
1

说明

选出 1 1 1,得到 0,最终数组转换为 [],最后没有剩下银块,返回 0

示例二

输入

3
3 7 10
12

输出

1
1

说明

选出 3 7 10,需要计算 (7-3)(10-7) 的差值,即(7-3)-(10-7)=1,所以数组转换为 [1],剩余一块,返回该块重量,返回 1

思路

  1. 读取输入

    • 首先,从标准输入中读取银饰的数量 n
    • 然后,用一个数组 weight[] 存储每块银饰的重量,通过循环读取并存储。
  2. 排序银饰重量

    • 使用 C 语言内置的 qsort 函数对 weight[] 数组进行降序排列,这样每次都能直接获取最重的三块银饰。
  3. 熔炼逻辑

    • 当银饰数量大于等于3时,进入熔炼循环。
      • 在每一次循环中,取出当前最重的三块银饰(下标为 0、1、2 的元素)。
      • 根据题目给出的熔炼规则计算可能剩余的银块重量,并将结果存储到变量 piece 中。
      • 如果没有剩余(piece == 0),则继续下一轮循环;否则,将剩余重量 piece 加入数组,并更新当前银饰数量 n,然后重新对数组进行排序。
  4. 处理剩余银饰

    • 循环结束后,根据剩余银饰的数量决定输出结果:
      • 如果没有剩余银饰(n == 0),输出 0
      • 如果只剩一块银饰(n == 1),输出该块银饰的重量(输出weight[0]);
      • 如果剩余两块银饰(n == 2),比较这两块的重量并输出较大的那个重量(输出weight[0])。

代码

#include <stdio.h>
#include <stdlib.h>// 定义一个比较函数,用于对银饰重量进行降序排序
int cmp(const void *a, const void *b) {return *(int *)b - *(int *)a; // 按照从大到小的顺序排列
}// 计算熔炼后可能剩余的银块重量
int res(int x, int y, int z) {if (x == y && y == z)return 0; // 如果三块重量相等,则完全熔化无剩余if (x == y && y != z)return z - y;// 如果两块较轻的重量相等,则剩余较重的一块减去较轻的一块重量if (x != y && y == z)return y - x;// 如果中间和最重的重量相等,则剩余中间的减去最轻的一块重量if (x != y && y != z)return abs((z - y) - (y - x));// 如果三块重量都不相等,则计算两者差值的绝对值作为剩余重量
}int main() {int n;scanf("%d", &n); // 输入银饰的数量// 初始化银饰重量数组int weight[n];for (int i = 0; i < n; i++) {scanf("%d", &weight[i]); // 输入每一块银饰的重量}// 对银饰重量数组进行降序排序qsort(weight, n, sizeof(int), cmp);// 当银饰数量大于等于3时,持续熔炼while (n >= 3) {// 获取当前最重的三块银饰重量int x = weight[2];int y = weight[1];int z = weight[0];// 移除已熔炼的三块银饰,并将剩余银饰向前移动for (int i = 0; i < n - 3; i++) {weight[i] = weight[i + 3];}n -= 3;// 计算此次熔炼后的剩余重量,并将其加入数组(若有剩余)int piece = res(x, y, z);if (piece == 0)continue;else {weight[n++] = piece;qsort(weight, n, sizeof(int), cmp); // 再次对剩余银饰进行降序排序}}// 根据最终剩余的银饰数量输出结果if (n == 0) {printf("0\n"); // 若没有剩余则输出0} else {printf("%d\n", weight[0]); // 否则输出剩余银饰的重量(数组中的最大值)}return 0;
}

文章目录

    • 题目描述
    • 输入描述
    • 输出描述
    • 示例一
    • 示例二
    • 思路
    • 代码

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

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

相关文章

FFmpeg——avio_reading实例(学习)

目录 前言一、源码二、分析1、av_file_map函数2、avformat_alloc_context函数3、avio_alloc_context函数4、avformat_open_input函数5、avformat_find_stream_info函数 前言 avio_reading是关于对音视频流内存读取操作的应用实例&#xff0c;将文件中获取的数据流映射到内存再…

go使用trpc案例

1.go下载trpc go install trpc.group/trpc-go/trpc-cmdline/trpclatest 有报错的话尝试配置一些代理&#xff08;选一个&#xff09; go env -w GOPROXYhttps://goproxy.cn,direct go env -w GOPROXYhttps://goproxy.io,direct go env -w GOPROXYhttps://goproxy.baidu.com/…

普中51单片机学习(红外通信)

红外通信 红外线系统的组成 外线遥控器已被广泛使用在各种类型的家电产品上&#xff0c;它的出现给使用电器提供了很多的便利。红外线系统一般由红外发射装置和红外接收设备两大部分组成。红外发射装置又可由键盘电路、红外编码芯片、电源和红外发射电路组成。红外接收设备可由…

igolang学习2,golang开发配置国内镜像

go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct

什么是系统工程(字幕)36

0 00:00:00,980 --> 00:00:03,240 那首先的话是给 1 00:00:03,820 --> 00:00:06,646 给水加上这个值属性 2 00:00:06,646 --> 00:00:11,170 你看&#xff0c;水之前在这里嘛&#xff0c;没有 3 00:00:11,450 --> 00:00:12,959 属性的&#xff0c;对吧 4 00:00:…

Modern C++ std::visit从实践到原理

前言 std::visit 是 C17 中引入的一个模板函数&#xff0c;它用于对给定的 variant、union 类型或任何其他兼容的类型执行一个访问者操作。这个函数为多种可能类型的值提供了一种统一的访问机制。使用 std::visit&#xff0c;你可以编写更通用和灵活的代码&#xff0c;而无需关…

持续集成,持续交付和持续部署的概念,以及GitLab CI / CD的介绍

引言&#xff1a;上一期我们部署好了gitlab极狐网页版&#xff0c;今天我们介绍一下GitLabCI / CD 目录 一、为什么要 CI / CD 方法 1、持续集成 2、持续交付 3、持续部署 二、GitLab CI / CD简介 三、GitLab CI / CD 的工作原理 4、基本CI / CD工作流程 5、首次设置 …

SQL防止注入工具类,可能用于SQL注入的字符有哪些

SQL注入是一种攻击技术&#xff0c;攻击者试图通过在输入中注入恶意的SQL代码来干扰应用程序的数据库查询。为了防止SQL注入&#xff0c;你需要了解可能用于注入的一些常见字符和技术。以下是一些常见的SQL注入字符和技术&#xff1a; 单引号 ​&#xff1a; 攻击者可能会尝试…

【Spring】声明式事务 spring-tx

文章目录 声明式事务是什么&#xff1f;一、Spring事务管理器二、基于注解的声明式事务1.1 准备工作1.2 基本事务控制1.3 事务属性&#xff1a;只读1.4 事务属性&#xff1a;超时时间1.5 事务属性&#xff1a;事务异常1.6 事务属性&#xff1a;事务隔离级别1.7 事务属性&#x…

【vscode】按F5无法执行调试python或go

原因&#xff1a; 找不到解析器&#xff0c;需要安装插件&#xff08;python&#xff0c;或go 等&#xff09; 安装插件后&#xff0c;还是无法执行&#xff0c;按 ctrlshiftp,看不到解析器 正常应该是&#xff1a; 解决方法&#xff1a; 1、判断python是否安装成功 pyth…

QT之QString.arg输出固定位数

问题描述 我需要用QString输出一个固定位数的数字字符串。起初我的代码是这样&#xff1a; int img_num 1 auto new_name QString("%1.png").arg((int)img_num, 3, 10, 0); //最后一个参数用u0也是一样的 qDebug() << "new_name:" << new…

2024Node.js零基础教程(小白友好型),nodejs新手到高手,(八)NodeJS入门——http模块

一念心清净&#xff0c;处处莲花开。 055_http模块_网页资源加载基本过程 哈喽&#xff0c;大家好&#xff0c;这一课节我们来介绍一下网页资源加载的基本过程。首先先强调一点&#xff0c;这个内容对于我们后续学习非常非常的关键&#xff0c;所以大家务必要将其掌握。 首先先…

安科瑞企业微电网智慧能源管理系统生态交流会顺利举行

2024年1月12日&#xff0c;安科瑞企业微电网智慧能源管理系统生态交流会顺利举行&#xff0c;本次会议旨在围绕双碳目标&#xff0c;共同探讨如何抓住新机遇、新市场&#xff0c;充分利用安科瑞企业微电网智慧能源的一站式服务&#xff0c;为企业节能、减碳、降本赋能&#xff…

Ansible 简介及部署 基础模块学习 ansible部署rsync 及时监控远程同步

Ansible介绍&#xff1a; Ansible 是一个配置管理系统&#xff0c;当下最流行的批量自动化运维工具之一&#xff0c;它是一款开源的自动化工具&#xff0c;基于Python开发的配置管理和应用部署的工具。 Ansible 是基于模块工作的&#xff0c;它只是提供了一种运行框架&#xff…

STM32控制max30102读取血氧心率数据(keil5工程)

一、前言 MAX30102是一款由Maxim Integrated推出的低功耗、高精度的心率和血氧饱和度检测传感器模块&#xff0c;适用于可穿戴设备如智能手环、智能手表等健康管理类电子产品。 该传感器主要特性如下&#xff1a; &#xff08;1&#xff09;光学测量&#xff1a;MAX30102内置…

从Spring-Boot-Starters学习如何治理maven依赖冲突问题

做中间件对接业务的同学&#xff0c;肯定对jar依赖冲突问题印象深刻。 Spring Boot Starters 实质上是Maven依赖和插件模块化管理&#xff0c;见spring-boot-starter-parent的 pom.xml 描述&#xff0c;其初衷是解决jar依赖冲突问题。 Spring Boot Starters 文档 罗列了所有s…

nginx-------- 高性能的 Web服务端 (三) 验证模块 页面配置

一、http设置 1.1 验证模块 需要输入用户名和密码 htpasswd 此命令来自于 httpd-tools 包&#xff0c;如果没有安装 安装一下即可 也可以安装httpd 直接yum install httpd -y 也一样 第一次生成文件htpasswd -c 文件路径 姓名 交互式生成密码 htpasswd -bc 文…

c语言的数据结构:找环状链表入口处

一起<(&#xffe3;︶&#xffe3;)↗[GO!] 1.如何判断一个链表是否有环 思路:设定两个快慢指针fast和slow,fast每次走两个结点,slow每次走一个节点 如果fast指针遇到了Null,那么这个链表没有环,如果fast和slow可以相遇,则代表这个链表有环 代码如下 N:fast先进环,slow后…

[C#]winform基于opencvsharp结合CSRNet算法实现低光图像增强黑暗图片变亮变清晰

【算法介绍】 "Conditional Sequential Modulation for Efficient Global Image Retouching" 是一种图像修饰方法&#xff0c;主要用于对图像进行全局的高效调整。该方法基于深度学习技术&#xff0c;通过引入条件向量来实现对图像特征的调制&#xff0c;以达到改善…

DAY28--learning English

一、积累 1.hood 2.peripheral 3.gallery 4.cord 5.cart 6.permanent 7.democratic 8.republican 9.bride 10.jet-lagged 11.vet 12.lease 13.landlord 14.aisle 15.lousy 16.via 17.order in 18.forecast 19.initiation 20.credit 二、练习 1.牛津原译 Hood /hʊd/ 1. a par…