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

题目描述

部门准备举办一场王者荣耀表演赛,有 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

python 复制代码
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))
相关推荐
evans在进步1 分钟前
Spring Boot 工程化核心详解:Parent、Starter、热部署、事务与多数据源
spring boot·后端·python
CQU_JIAKE9 分钟前
8.22【A】
算法
战略性的菠萝32 分钟前
学习笔记-Numpy知识
python·numpy
总有刁民想爱朕ha38 分钟前
零基础Python开发「图片批量转MP4视频」工具,本地离线、免费无水印
开发语言·python·音视频
捧 花1 小时前
FastAPI 基础语法:从一个完整接口理解 Web API 的设计
前端·python·fastapi·middleware
Ming_studying1 小时前
Python批量压缩图片:支持JPG_PNG_WebP、尺寸限制与CSV报告
开发语言·图像处理·python·pillow·图片压缩
大熊背1 小时前
ISP图像处理中大数乘法溢出处理(一)
人工智能·python·算法·溢出处理
何以解忧,唯有..1 小时前
Python协程详解:从生成器到async/await的完整指南
开发语言·python
hhzz1 小时前
智慧校园13类视频异常检测:数据集与预训练模型全攻略
人工智能·pytorch·python·深度学习·目标检测·机器学习
浩腾数字多媒体1 小时前
如何判断专业电子留言厂家适配条件?
大数据·人工智能·python