题目:

问题描述
  逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中。不过他想到了一个游戏来使他更无聊。他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的情况下长度最长是多少。
  
输入格式
  第一行一个数n,表示n个棍子。第二行n个数,每个数表示一根棍子的长度。
   
输出格式
  一个数,最大的长度。

解题思路:

LeetCode 78. 数列子集 + LeetCode 416. 分割等和子集
本题算是LeetCode 416的升级版吧,唯一的不同就是:不是考虑所有的数,而是可以有一些数不取。所以,我就想先求棍子数列的子集吧,再求子集的等和子集
虽然有点蠢的亚子,还是AC了!
欢迎交流讨论其他方法哦!

代码:

n = int(input())
group = list(map(int, input().split()))#求子集 LeetCode 78
def subsets(nums):res = [[]]for i in nums:res = res + [[i] + num for num in res]return res#求等和子集 LeetCode 416
def half_max(nums):total = sum(nums)target = sum(nums) // 2if total % 2:return False, targetL = [True] + [False] * targetfor num in nums:for i in range(target, num - 1, -1):L[i] = L[i] or L[i - num]return L[-1], target#先设最大长度为0
max_result = 0
#求出子集
nums = subsets(group)#遍历所有子集,求出子集的等和子集
for nums in nums:if not nums:continueflag, target = half_max(nums)#可以等分再看该组子集的和是否大于之前if flag and target > max_result:max_result = targetprint(max_result)

蓝桥杯 无聊的逗 Python题解相关推荐

  1. 蓝桥杯 无聊的逗 C++

    灵感来源于一篇文章:无聊的逗[蓝桥杯]-pudn.com 因为是从n个棍里选若干个,已经选过的棍不能再选,所以首先对数组序列进行排序,然后给所有元素赋一个状态,1为可用,0为不可用 如果要从n个棍里沾 ...

  2. 蓝桥杯 无聊的逗(java)

    无聊的逗 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在 ...

  3. 【蓝桥杯真题】 Python题解

  4. 第十一届蓝桥杯青少组Python竞赛真题

    第十一届蓝桥省赛Python组复盘 第十一届蓝桥省赛Python组复盘_哔哩哔哩_bilibili 蓝桥杯青少组Python竞赛真题讲解 蓝桥杯青少组Python竞赛真题讲解_哔哩哔哩_bilibil ...

  5. [蓝桥杯]横向打印二叉树 Python满分解法

    [蓝桥杯]横向打印二叉树 Python满分解法 #树的结点类定义 class Node:def __init__(self,left=0,right=0,w=0,line=0,leng=0):self ...

  6. 蓝桥杯 算法训练 逗志芃的危机

    蓝桥杯 算法训练 逗志芃的危机 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和 ...

  7. 蓝桥杯 蓝肽子序列 python(2020动态规划)

    蓝桥杯 蓝肽子序列 python(2020动态规划) 题目描述 L 星球上的生物由蛋蓝质组成,每一种蛋蓝质由一类称为蓝肽的物资首尾连接成一条长链后折叠而成. 生物学家小乔正在研究 L 星球上的蛋蓝质. ...

  8. 蓝桥杯-幸运数(python)

    蓝桥杯-幸运数(python) 一.题目 时间限制: 1Sec 内存限制: 128MB 题目描述: 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1 ...

  9. 蓝桥杯 ALGO-1005 数字游戏 python

    蓝桥杯 ALGO-1005 数字游戏 python 试题 算法训练 数字游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个1-N的排列a[i],每次将相邻两个数相加,得到 ...

最新文章

  1. Gaussian Filter
  2. Hadoop三种安装模式
  3. Chromium:编译,运行
  4. 用友报表java打不开怎么加载,点报表没反应怎么回事啊?演示账套也打不开。...
  5. ES6新特性_ES6扩展运算符的介绍---JavaScript_ECMAScript_ES6-ES11新特性工作笔记013
  6. jetson 安装atp-get install qt时出现 unable to locate 或者dependencies unmet的报错
  7. Matlab Tricks(二十四)—— 将一副图像逆时针旋转 180°
  8. 190812每日一句
  9. 分享五款好用的PDF编辑工具
  10. excel 超链接修改失败解决办法
  11. HP大中华区总裁孙振耀退休感言
  12. Redhat、Fedora、CentOS、OEL之间的关系与不同。
  13. Ubuntu拼音打不了中文
  14. 2021-2023年个人发展规划整理
  15. CISCO路由器、交换机设备破解密码
  16. CSS Flex 布局的 flex-direction 属性讲解
  17. 华盛顿大学西雅图 计算机科学 申请条件,华盛顿大学西雅图分校研究生申请条件有哪些?...
  18. socket listen函数
  19. win10 WiFi 密码查询 命令
  20. 明汯投资裘慧明:除了评估超额收益多与少 还要关注稳定性和可持续性

热门文章

  1. Pycharm趁热打铁(一):记账系统,管理你的小金库。
  2. AVG 杀毒软件2013中文版下载-来自捷克支持win8的免费杀毒软件
  3. iOS提交马甲包神器KLGenerateSpamCode
  4. 你所知道与不知道的游戏机发展史 60-90年代
  5. 接线端子VH,CH,XH
  6. linux禁止系统ip源路由功能,linux 高级路由 ip rule
  7. 阿里P8半年来每天加班到凌晨,只为这份Spring Boot进阶宝典,从理论到实战全面起飞
  8. oracle字符串函数
  9. EXCEL公式VLOOKUP函数用法详解
  10. 问题 Z: 尼克与强盗