You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maximum Weight Difference(CodeChef)提交WA 求Python代码问题排查

问题分析

你提交的代码错误的核心原因是没有考虑k与n-k的大小关系:

  • 该题要求将数组拆分为两个分组,其中一个分组大小为k,另一个为n-k,求两个分组和的最大差值
  • 你的代码默认只计算了「把最小的k个元素作为一组,剩余元素作为另一组」的差值,没有考虑当k > n-k时,「把最小的n-k个元素作为一组,剩余k个最大的元素作为另一组」的差值会更大,此时你的代码输出的差值不是最大值,因此会判定为错误答案。
错误复现示例

测试用例:n=5,k=3,数组为[1,2,3,4,5]
你的代码计算结果:abs((1+2+3) - (4+5)) = 3
正确结果:abs((3+4+5) - (1+2)) = 9

修正方案

只需要在切分数组前先取k和n-k的最小值作为切分长度即可,修正后的代码如下:

for i in range(int(input())):
    n,k=map(int,input().split())
    arr=list(map(int,input().split()))
    arr.sort()
    # 取更小的分组长度,保证小分组全为最小元素、大分组全为最大元素,得到的差值最大
    m = min(k, n - k)
    arr1=arr[:m]
    arr2=arr[m:]
    print(abs(sum(arr1)-sum(arr2)))

内容的提问来源于stack exchange,提问作者ABHIJEET SINGH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:54:03