【秋招笔试题】阵营分配


解法:简单背包题。

python 复制代码
def solve(nums):
    n = len(nums)
    totalSum = sum(nums)

    dp = [[False] * (totalSum // 2 + 1) for _ in range(n + 1)]

    for i in range(n + 1):
        dp[i][0] = True

    for i in range(1, n + 1):
        for j in range(1, totalSum // 2 + 1):
            if nums[i - 1] <= j:
                dp[i][j] = dp[i - 1][j] or dp[i - 1][j - nums[i - 1]]
            else:
                dp[i][j] = dp[i - 1][j]

    minDiff = totalSum
    for j in range(totalSum // 2, -1, -1):
        if dp[n][j]:
            minDiff = totalSum - 2 * j
            break

    return minDiff

if __name__ == "__main__":
    n = int(input())
    nums = list(map(int, input().split()))

    result = solve(nums)
    print(result)
相关推荐
wearegogog1231 小时前
基于块匹配的MATLAB视频去抖动算法
算法·matlab·音视频
十重幻想2 小时前
PTA6-1 使用函数求最大公约数(C)
c语言·数据结构·算法
大千AI助手3 小时前
蛙跳积分法:分子动力学模拟中的高效数值积分技术
算法·积分·数值积分·蛙跳积分法·牛顿力学系统·verlet积分算法
zycoder.3 小时前
力扣面试经典150题day3第五题(lc69),第六题(lc189)
算法·leetcode·面试
西阳未落5 小时前
LeetCode——双指针
c++·算法
胖咕噜的稞达鸭5 小时前
C++中的父继子承:继承方式实现栈及同名隐藏和函数重载的本质区别, 派生类的4个默认成员函数
java·c语言·开发语言·数据结构·c++·redis·算法
笑口常开xpr5 小时前
【C++】模板 - - - 泛型编程的魔法模具,一键生成各类代码
开发语言·数据结构·c++·算法
IT小番茄6 小时前
Kubernetes云平台管理实战:自动加载到负载均衡(七)
算法
笑口常开xpr6 小时前
【C++继承】深入浅出C++继承机制
开发语言·数据结构·c++·算法
让我们一起加油好吗7 小时前
【基础算法】DFS
算法·深度优先