当前位置: 首页 > article >正文

回溯算法(组合问题)-- 游戏分组

题目描述
部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与,分为两队,每队 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
输入
1 2 3 4 5 6 7 8 9 10
输出
1
说明
10名队员分为两组,两组实力差绝对值最小为1

levels = list(map(int,input().split()))
levels.sort()
path=[]
result=[]
def backbrack(n,k,startindex):#  n为总元素个数,k为每个集合中的元素数量
    if len(path)==k: #终止条件
        diff = abs(sum(levels)-2*sum(path))
        result.append(diff)
        return
    for i in range(startindex,n-(k-len(path))+1):
        if startindex>i and levels[i]==levels[i-1]:#层次剪枝
            continue
        path.append(levels[i])
        backbrack(n,k,i+1)
        path.remove(levels[i])
backbrack(10,5,0)
print(min(result))


http://www.kler.cn/a/392177.html

相关文章:

  • ❤React-React 组件基础(类组件)
  • 使用pytest+openpyxl做接口自动化遇到的问题
  • 【金融风控】特征评估与筛选详解
  • 【计算机网络】Socket编程接口
  • uni-app中使用 unicloud 云开发平台③
  • 图论基本术语
  • btstack协议栈实战篇--HID Keyboard Classic
  • 预处理、编译、汇编和链接
  • 力扣 二叉树的直径-543
  • 详解Gemini API的使用:在国内实现大模型对话与目标检测教程
  • SpringBoot 实战:文件上传之秒传、断点续传、分片上传
  • 比速M3比速T3比速T5北汽制造007 勇士 锐铃维修手册电路图资料更新线路接线
  • 高效编程训练:Spring Boot系统设计与实践
  • 试用免费界面美化程序SeelenUI,让你的Windows变得更美
  • Spring 解析xml中的 BeanDefination 大概过程
  • 每日一练:二分查找-x的平方根
  • Unity3D学习FPS游戏(11)敌人AI巡逻(NavMesh)
  • C++多态及其在设计模式中的作用举例
  • 【webrtc】 RTP 中的 MID(Media Stream Identifier)
  • Spring Boot编程训练系统:构建企业级应用
  • 基于BILSTM及其他RNN序列模型的人名分类器
  • 革新农业未来!Dimitra生态币价双双腾飞在即
  • AI 大模型在软件开发中的角色
  • IntelliJ IDEA 启动报 Unsupported Java Version
  • HTTP 客户端怎么向 Spring Cloud Sleuth 传输跟踪 ID
  • 彻底理解ARXML中的PDU