题目

你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍 拼成一个正方形。你 不能折断 任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须 使用一次 。

如果你能使这个正方形,则返回 true ,否则返回 false 。

示例 1:

输入: matchsticks = [1,1,2,2,2]
输出: true
解释: 能拼成一个边长为2的正方形,每边两根火柴。
示例 2:

输入: matchsticks = [3,3,3,3,4]
输出: false
解释: 不能用所有火柴拼成一个正方形。

提示:

1 <= matchsticks.length <= 15
1 <= matchsticks[i] <= 108

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/matchsticks-to-square
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解决方法

    fun makesquare(matchsticks: IntArray): Boolean {val sum = matchsticks.sum()if (sum % 4 != 0) {return false}val edges = IntArray(4) { 0 }//为什么逆序排了一下 效率这么高?matchsticks.sortDescending()return dfs(0, matchsticks, edges, sum / 4)}private fun dfs(index: Int, matchsticks: IntArray, edges: IntArray, length: Int): Boolean {if (index == matchsticks.size) {return true}for (i in 0..3) {if (edges[i] + matchsticks[index] > length) {continue}edges[i] += matchsticks[index]if (dfs(index + 1, matchsticks, edges, length)) {return true}edges[i] -= matchsticks[index]}return false}

总结

1.算法就是把不同的问题,转换成熟悉的模型去解决。要学会数学归纳
2.DFS真的是一个必须掌握的
3.日子一天一天过,没有特别精彩,也没有特别难过

算法----火柴拼正方形相关推荐

  1. 经典回溯之火柴拼正方形

    473. 火柴拼正方形 给定很多小短火柴,拼成一个正方形 用到的技巧 1.  排序,传参数,起到剪枝的效果,排序后前面搜索过的在下层时直接跳过,具体体现为 for (int i = idx;i< ...

  2. LeetCode 473. 火柴拼正方形

    473. 火柴拼正方形 还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法.不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到 ...

  3. LeetCode473. 火柴拼正方形

    目录 文章目录 一.题目 二.解题思路 三.知识总结 1.C++ sort()排序函数用法详解 2.accumulate()函数 总结 一.题目 你将得到一个整数数组 matchsticks ,其中 ...

  4. 【473. 火柴拼正方形】

    来源:力扣(LeetCode) 描述 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度.你要用 所有的火柴棍 拼成一个正方形.你 不能折断 ...

  5. LeetCode 473. 火柴拼正方形(回溯)

    文章目录 1. 题目 2. 解题 1. 题目 还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法. 不能折断火柴,可以把火柴连接起 ...

  6. 473. 火柴拼正方形

    还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法.不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到. 输入为小女孩拥有火柴 ...

  7. [Swift]LeetCode473. 火柴拼正方形 | Matchsticks to Square

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  8. 【Leetcode刷题Python】473. 火柴拼正方形

    1 题目 你将得到一个整数数组 matchsticks ,其中 matchsticks[i] 是第 i 个火柴棒的长度.你要用 所有的火柴棍 拼成一个正方形.你 不能折断 任何一根火柴棒,但你可以把它 ...

  9. 贪心算法 | 473火柴拼正方形 怎么用C++实现摆放火柴棍?

    题目 已知一个数组,保存了n个(n<=15)火柴棍,问可否使用这n个火柴棍摆成一个正方形? 例如:[1,1,2,2,2] --true  2 求解 思路 num[i] :第i条火柴棍 bucke ...

最新文章

  1. 在XP SP3中启用支持NLA的远程桌面
  2. oracle自治事务的写法_Oracle的自治事务
  3. Reporting Service 钻取
  4. scrapy-redis mysql_Scrapy-redis 分布式
  5. jQuery中的text()、html()和val()以及innerText、innerHTML和value
  6. Unity优化之GC——合理优化Unity的GC (难度3 推荐5)
  7. 语言统计学中的几个定律,可作为设计检索的参考
  8. wordpress汉化技巧_保护您的WordPress网站的6个技巧
  9. ps 如何增加 填充图案
  10. java对mysql进行查找替换_Java对MySQL数据库进行连接、查询和修改【转载】
  11. 松下伺服驱动器A4系列图纸
  12. csapp--键盘驱动程序的分析与修改
  13. PWM的基本原理及应用实例
  14. 3GPP 5G 常用协议规范下载整理
  15. flask实现浏览器实时视频播放
  16. 【历史上的今天】12 月 20 日:苹果收购 NeXT;苏联超级计算机先驱诞生;《绝地求生》发布
  17. 实现支付宝AR扫描动画效果
  18. 通过快递鸟如何接入中通快递电子面单
  19. 过滤敏感词汇(trie树实现敏感词过滤)
  20. Material UI 带复选框表格获取选中值(索引)

热门文章

  1. css的white-space属性:normal,nowrap,pre,pre-line和pre-wrap的区别?
  2. QT操作Word汇总
  3. shell两行输出为一行
  4. 美的楼宇科技荆州工厂正式投产;华为加入国际电联P2C数字联盟 | 美通企业日报...
  5. 闽南师范大学计算机科学学院副书记,CCF闽南师范大学学生分会完成换届
  6. surface pro4 win10下安装elementray os双系统教程
  7. android-studio推荐模拟器,Android studio 三大模拟器比较,强烈推荐第三种
  8. 有什么高效的Windows笔记软件?3款优秀的笔记软件推荐!
  9. 社群运营岗位部门团队KPI绩效sop工作流程计划方案
  10. Micro LED将引领小间距显示的未来。