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

输入为小女孩拥有火柴的数目,每根火柴用其长度表示。输出即为是否能用所有的火柴拼成正方形。

示例 1:

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

示例 2:

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

注意:

  1. 给定的火柴长度和在 0 到 10^9之间。
  2. 火柴数组的长度不超过15。

class Solution {
public:
    bool makesquare(vector<int>& nums) {
        if (nums.empty() || nums.size() < 4) return false;
        int sum = accumulate(nums.begin(), nums.end(), 0);
        if (sum % 4 != 0) return false;
        vector<int> sums(4, 0);
        sort(nums.rbegin(), nums.rend());
        return helper(nums, sums, 0, sum / 4);
    }
    bool helper(vector<int>& nums, vector<int>& sums, int pos, int target) {
        if (pos >= nums.size()) {
            return sums[0] == target && sums[1] == target && sums[2] == target;
        }
        for (int i = 0; i < 4; ++i) {
            if (sums[i] + nums[pos] > target) continue;
            sums[i] += nums[pos];
            if (helper(nums, sums, pos + 1, target)) return true;
            sums[i] -= nums[pos];
        }
        return false;
    }
};

473.火柴拼正方形相关推荐

  1. LeetCode 473. 火柴拼正方形

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

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

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

  3. 473. 火柴拼正方形

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

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

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

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

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

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

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

  7. leetcode 473. Matchsticks to Square | 473. 火柴拼正方形(递归)

    题目 https://leetcode.com/problems/matchsticks-to-square/ 题解 看了 hint 之后,才有思路. 讨论区有个人说得好: This solution ...

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

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

  9. 算法----火柴拼正方形

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

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

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

最新文章

  1. 素材诊断分析助手_短视频运营必备的8款数据分析工具
  2. Discuz学习总结——部分bug解决方案
  3. Oracle 不使用DBCA在Oracle 11中删除数据库
  4. mac android studio 打不开adb,Android-Macbook ADB无法打开
  5. oracle中 rownum与rowid的理
  6. Anchor-free新思路,统一目标检测、实例分割、姿态估计三种任务
  7. 配置linux定时任务没跑,Linux配置定时任务
  8. re 模块, 正则表达式 \w+\d+ 的重复问题引发的题目解析
  9. PHP合并2个数字键数组的值
  10. 变电站计算机监控 规范,110kV变电站计算机监控系统技术规范书.docx
  11. 除了UL认证,开拓美国市场必备认证有哪些?
  12. MI(mutal information)and Entropy
  13. 板邓:php+mayql分页原理及案例
  14. Ansible 进阶 (1) inventory
  15. HTML嵌套注释、多行注释、多级注释,提高生产力
  16. 软件版本命名规范详解
  17. 【Oracle篇】Oracle的客户端工具
  18. 映客都是互刷礼物吗_一姐负气出走花椒,映客正在发生一场大规模主播内讧事件.........
  19. [30期] 个人职业规划
  20. 关于 MDD(度量驱动开发)的一些思考

热门文章

  1. 是德科技发力5G测试测量 欲攻占市场领导地位
  2. CABasicAnimation添加动画离开屏幕就动画停止的问题
  3. 字符串是通过“引用”传递的
  4. socket发送http请求
  5. Microsoft 安全公告 MS12-020 - 严重。请大家关注!!
  6. linux培训课程第一天:ppt以及笔记
  7. C#扩展名关联【转】
  8. Java 方法的反射
  9. 数据结构实验3-带头结点的单链表
  10. edui 富文本编辑_百度umeditor富文本编辑器插件扩展