LeetCode 374 火柴拼正方形[回溯] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 374 火柴拼正方形[回溯] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。


解题思路:
首先火柴的总长度得满足4的倍数,否则根本不能构成正方形,接着对每个火柴进行dfs,让其在每条边都试一次,并回溯,如果所有的火柴都遍历并满足构成正方形的条件,返回true,否则返回false,代码如下:

class Solution 
public:
    bool makesquare(vector<int>& matchsticks) 
        int count = accumulate(matchsticks.begin(), matchsticks.end(), 0);
        if(count % 4 != 0) 
            return false;
        
        sort(matchsticks.begin(), matchsticks.end(), greater<int>());
        vector<int> edges(4);
        return dfs(0, matchsticks, edges, count / 4);
    

    bool dfs(int index, vector<int>& matchsticks, vector<int>& edges, int num) 
        if(index == matchsticks.size()) 
            return true;
        
        for(int i = 0; i < 4; i ++) 
            edges[i] += matchsticks[index];
            if(edges[i] <= num && dfs(index + 1, matchsticks, edges, num)) 
                return true;
             
            edges[i] -= matchsticks[index];
        
        return false;
    
;
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于LeetCode 374 火柴拼正方形[回溯] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 473.火柴拼正方形

leetcode 火柴拼正方形 深搜

LeetCode 473 火柴拼正方形

#yyds干货盘点# leetcode算法题:火柴拼正方形

Leetcode刷题Python473. 火柴拼正方形

leetcode-473 火柴拼正方形