分享两道算法题

分享两道算法题


王者荣耀分组

题目描述
部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与,分 5 为两队,每队 5 人。
每位参与者都有一个评分,代表着他的游戏水平。
为了表演赛尽可能精彩,我们需要把 10 名参赛者分为实力尽量相近的两队。一队的实力可以表示为这一队 5 名队员的评分总和。
现在给你 10 名参与者的游戏水平评分,请你根据上述要求分队最后输出这两组的实力差绝对值。
例: 10 名参赛者的评分分别为 5 1 8 3 4 6 7 10 9 2,分组为 (1 3 5 8 10) (2 4 6 7 9),两组实力差最小,差值为 1。有多种分法,但实力差的绝对值最小为 1。

输入描述
10 个整数,表示 10 名参与者的游戏水平评分。范围在[1,10000]之间

输出描述
1 个整数,表示分组后两组实力差绝对值的最小值。

示例一
输入

1 2 3 4 5 6 7 8 9 10
输出
1
说明

10 名队员分成两组,两组实力差绝对值最小为 1

基于C语言的代码:

#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
int total = 0;
int res = INT_MAX;
// 深度优先搜索函数
void dfs(int score[10], int idx, int count, int currentSum) {// 当我们为一个队伍选择了5名玩家时if (count == 5) {// 计算另一个队伍的总和int otherTeamSum = total - currentSum;// 用较小的差值更新结果res = abs(currentSum - otherTeamSum) < res? abs(currentSum - otherTeamSum): res;return;}// 如果我们已经考虑了所有玩家,停止递归if (idx == 10) {return;}// 为第一个队伍选择当前玩家dfs(score, idx + 1, count + 1, currentSum + score[idx]);// 不为第一个队伍选择当前玩家dfs(score, idx + 1, count, currentSum);
}
int main() {int score[10];for (int i = 0; i < 10; i++) {scanf("%d", &score[i]);total += score[i];}dfs(score, 0, 0, 0);printf("%d", res);return 0;
}

注意: <limits.h>
<limits.h> 是 C 语言的一个标准库头文件,它定义了各种数据类型(如整数、浮点数等)的最小和最大可能值。在程序中包含 <limits.h> 头文件后,可以使用预定义的宏来访问这些值。

例如,在给定的代码片段中,INT_MAX 就是来自 <limits.h> 的一个预定义宏,表示 int 类型的最大值。这个宏在初始化变量 res 时被用作初始的最大可能实力差:
int res = INT_MAX;

通过这样的方式,我们可以确保 res 被初始化为一个足够大的数值,以便在后续计算中能够容纳任何可能出现的实力差,并能够在遍历所有分组方案后更新到真正的最小实力差。

基于Python的代码求解

import sysres = sys.maxsize
sum = 0
tarsum = 0
#global sum, res:声明sum和res为全局变量,这样在dfs函数内部可以访问和修改它们。
# cursum是当前队伍的总得分def dfs(mylist,id,count,cursum):global sum,res,trasumif count == 5:othersum = sum - cursumres = min(res,abs(cursum - othersum))return# id 记录了全部玩家的情形,id等于10则停止递归if id == 10:return#选择当前队伍的玩家dfs(mylist,id+1,count+1,cursum+mylist[id])#另一个队伍的玩家dfs(mylist,id+1,count,cursum)mylist = list(map(int, input().split(' ')))
for i in mylist:sum += itrasum = sum // 2
dfs(mylist,0,0,0)
print(res)

最大括号深度

在这里插入图片描述
在这里插入图片描述

基于python代码求解

#定义栈strings = input()
def depth(s):if not s:return 0stack = []maxdepth = 0for i ,c in enumerate(s):if c in '({[':stack.append(c)maxdepth = max(maxdepth,len(stack))else:if not stack:breakif(c==')' and stack[-1]=='(') or \(c=='}' and stack[-1]=='{') or \(c==']' and stack[-1]=='[') :stack.pop()else:breakreturn maxdepth if not stack else 0print(depth(strings))        

或者更简单的写法:


s = input()def getResult():map = {")": "(","]": "[","}": "{"}stack = []for c in s:if stack and map.get(c) == stack[-1]:stack.pop()else:stack.append(c)if stack:return 0return len(stack)print(getResult())

总结:

以上两道算法题第一道用到了深度优先搜索的思想,题目想要得到一个使得两队的实力差距最小的分组方案,我们利用了深度优先搜索的思想,将队员i加入第一个队代表向前走,不加入代表选择其他路径;最终深度优先搜索代码遍历了所有可能的分配方案,并通过我们定义的参数res返回了最佳分配方案的两队实力差距。而第二题很明显要用到栈的思想,python中列表的添加元素和删除末尾元素成功模拟了入栈和出栈的过程,当栈中上一个元素的对应括号出现时,则出栈,否则入栈,最终将记录到的栈的最大长度输出。

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

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

相关文章

leetcode练习 二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3提示&#xff1a; 树中节点的数量在 [0, 104] 区间内。-100 …

RabbitMQ08_保证消息可靠性

保证消息可靠性 一、生产者可靠性1、生产者重连机制&#xff08;防止网络波动&#xff09;2、生产者确认机制Publisher Return 确认机制Publisher Confirm 确认机制 二、MQ 可靠性1、数据持久化交换机、队列持久化消息持久化 2、Lazy Queue 惰性队列 三、消费者可靠性1、消费者…

Springboot 文件上传下载相关问题

文章目录 关于Springboot 文件上传下载问题解决方案注意事项文件上传文件下载文件删除文件在线打开在写练习的时候&#xff0c;发现了一些小小的问题&#xff0c;已经在 上述代码中体现。① 代码路径碰到中文的时候&#xff0c;会有乱码&#xff0c;需要转换&#xff08;内容中…

华润电力最新校招社招润择认知能力测评:逻辑推理数字计算语言理解高分攻略

​ 尊敬的求职者们&#xff0c; 在您准备加入华润电力这个大家庭之前&#xff0c;了解其招聘测评的详细流程和要求是至关重要的。以下是我们为您整理的测评系统核心内容&#xff0c;希望对您的求职之旅有所帮助。 测评系统概览 华润电力的招聘测评系统旨在全面评估求职者的认…

【WEB】序列一下

1、 2、反序列化 <?phpclass Polar{public $url polarctf.com;public $ltsystem;public $bls /;function __destruct(){$a $this->lt;$a($this->b);} }$a new Polar(); echo serialize($a); ?>###O:5:"Polar":3:{s:3:"url";s:12:"…

CSS 布局三大样式简单学习

目录 1. css 浮动 1.1 效果1 1.2 效果2 1.3 效果3 1.4 效果4 2. css 定位 2.1 absolute 2.2 relative 2.3 fixed 3. css 盒子模型 3.1 效果1 3.2 效果2 3.3 效果3 3.4 效果4 1. css 浮动 1.1 效果1 1.2 效果2 1.3 效果3 1.4 效果4 2. css 定位 2.1 absolute 2.2 …

AI 时代的网络危机沟通计划

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

吉首大学--23级题目讲解

7-1 单链表基本操作 在 C/C 中&#xff0c;.&#xff08;点&#xff09;和 ->&#xff08;箭头&#xff09;运算符用于访问结构体或类的成员&#xff0c;但它们的使用场景不同。 1. . 运算符 . 运算符用于访问结构体或类的成员&#xff0c;通过对象或结构体变量直接访问。…

51单片机——独立按键

一、独立按键对应单片机P3管脚&#xff0c;如图 二、按键点亮LED灯 #include <STC89C5xRC.H> void main() { while(1) { if(P300) { P200; } else { P201; } } } 当按键为0时&#xff0c;代表按下&#xff0c;所以当P30按下时&#xff0c;让P20&#xff1d;0&#…

[产品管理-32]:NPDP新产品开发 - 30 - 文化、团队与领导力 - 领导力与团队的可持续发展

目录 一、团队领导的领导力 1.1 领导力 1、领导力的定义 2、领导力的重要性 3、领导力的构成要素 4、如何提升领导力 1.2 情商 二、虚拟团队 1、团队定义与特征 2、团队优势 3、团队挑战与应对策略 三、可持续发展 四、团队管理和领导力中的度量指标 4.1 激励创新…

XXL-JOB分片概念讲解

3. 分片功能讲解 3.1 案例需求&#xff1a; 1.我们现在实现这样的需求&#xff0c;在指定节假日&#xff0c;需要给平台的所有用户去发送祝福的短信 3.2.编码实现&#xff1a; a.初始化数据 1.在数据库中导入xxl_job_demo.sql数据 b.集成Druid&MyBatis 1.添加依赖 &…

[Python数据拟合与可视化]:使用线性、多项式、指数和高斯模型拟合数据

引言 在数据分析和机器学习领域&#xff0c;选择合适的模型对数据进行拟合是至关重要的。本文将通过一个实际的Python编程案例&#xff0c;比较线性、多项式、指数和高斯模型在数据拟合方面的性能。通过生成模拟数据&#xff0c;我们将使用这些模型进行拟合&#xff0c;并评估…

安捷伦Agilent/keysight 53220A参数资料 通用频率计 计数器

Agilent 53220A&#xff0c;Keysight 53220A&#xff0c;通用频率计数器/计时器&#xff0c;350 MHz&#xff0c;12 位&#xff0c;100 ps 53220A 350 MHz 通用频率计数器/计时器是一款双通道频率计数器&#xff0c;能够执行所需的全部频率和时间间隔测量。它可以添加可选的射…

Linux--守护进程与会话

进程组 概念 进程组就是一个或多个进程的集合。 一个进程组可以包含多个进程。 下面我们通过一句简单的命令行来展示&#xff1a; 为什么会有进程组&#xff1f; 批量操作&#xff1a;进程组允许将多个进程组织在一起&#xff0c;形成一个逻辑上的整体。当需要对多个进程…

【计算机网络】详解UDP套接字网络字节序IP地址端口号

一、网络字节序 我们已经知道, 内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分. 发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出; 接收主机把从网络上接到…

2023北华大学程序设计新生赛部分题解

时光如流水般逝去&#xff0c;我已在校园中奋战大二&#xff01;(≧▽≦) 今天&#xff0c;静静回顾去年的新生赛&#xff0c;心中涌起无尽感慨&#xff0c;仿佛那段青春岁月如烟花般绚烂。✧&#xff61;(≧▽≦)&#xff61;✧ 青春就像一场燃烧的盛宴&#xff0c;激情澎湃&…

DOS(Disk Operating System,磁盘操作系统)常用指令

目录 背景: 早期探索: DOS之父&#xff1a; 发展历程&#xff1a; 常用指令&#xff1a; 进入命令&#xff1a; 操作1.进入和回退&#xff1a; 操作2.增、删&#xff1a; 操作3.其它&#xff1a; 总结: 背景: 早期探索: DOS(Disk Operating System,磁盘操作系统)在…

数据结构——二叉搜索树

目录 二叉搜索树 概念性质 性能分析 实现代码 前置准备 插入 查找 删除&#xff08;重点&#xff09; ​编辑 key和key/value的使用场景 key/value二叉搜索树代码实现 二叉搜索树 概念性质 二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称BST&#xff0…

主流卷积神经网络CNN总结

ResNet&#xff08;2015&#xff09;残差神经网络 残差结构 ResNet50具体卷积结构图 ResNeXt&#xff08;2016&#xff09;加入了分组卷积的思想&#xff0c;将原ResNet网络中的block替换成由group分组的block&#xff0c;两者得到的feature map一致&#xff0c;只是参数量更少…

2024年华为杯-研赛F题论文问题一二讲解+代码分享

X射线脉冲星光子到达时间建模 摘要 脉冲星是一类高速自转的中子星&#xff0c;其自转形成规律性脉冲信号&#xff0c;类似于“宇宙中的灯塔”&#xff0c;因此被认为是极为精确的时钟。X射线脉冲星导航利用脉冲星信号为航天器提供时间和空间参考。通过比较脉冲信号到达航天器…