leetcode-473. 火柴拼正方形
題目
還記得童話《賣火柴的小女孩》嗎?現在,你知道小女孩有多少根火柴,請找出一種能使用所有火柴拼成一個正方形的方法。不能折斷火柴,可以把火柴連線起來,並且每根火柴都要用到。
輸入為小女孩擁有火柴的數目,每根火柴用其長度表示。輸出即為是否能用所有的火柴拼成正方形。
示例 1:
輸入: [1,1,2,2,2]
輸出: true
解釋: 能拼成一個邊長為2的正方形,每邊兩根火柴。
示例 2:
輸入: [3,3,3,3,4]
輸出: false
解釋: 不能用所有火柴拼成一個正方形。
注意:
給定的火柴長度和在 0 到 10^9之間。
火柴陣列的長度不超過15。
解題思路
和劃分為k個相等的子集思路完全一樣,是k = 4
的特例
狀態壓縮dp的思路和這個完全一樣的,只不過是在visited_indexs
的地方用bit來表示了。
程式碼
class Solution:
def makesquare(self, nums: List[int]) -> bool:
if (not nums) or sum(nums) % 4 or max(nums) > sum(nums) // 4:
return False
visited_indexs = [False] * len(nums)
target = sum(nums) // 4
def helper(nums: list, edge_cnt: int, begin_index: int, cur_sum: int) -> bool:
if edge_cnt == 4:
return True
if cur_sum > target:
return False
if cur_sum == target:
return helper(nums, edge_cnt + 1, 0, 0)
for index in range(begin_index, len(nums)):
if visited_indexs[index]:
continue
visited_indexs[index] = True
if helper(nums, edge_cnt, index + 1, cur_sum + nums[index]):
return True
visited_indexs[index] = False
return False
return helper(nums, 0, 0, 0)
相關文章
- 火柴排隊
- 火柴人系列新品不斷,《火柴人覺醒》又要來襲!
- 【DP】最大正方形
- 火柴人正版授權動作手遊《火柴人歸來》今日首測!
- 火柴人正版續作放置卡牌手遊《火柴人覺醒》今日首測!
- 《火柴人覺醒》今日全平臺公測,放置卡牌拯救火柴人!
- css實現最大正方形CSS
- 正方形計數 題解
- 3億鬥者爺青回,火柴人全新續作《火柴人歸來》即將歸來!
- 單獨補題-數正方形
- 【洛谷OJ】【JAVA】P1149 火柴棒等式Java
- 邊界都是1的最大正方形大小
- Python實現火柴人的設計與實現Python
- [LeetCode 中等 動態規劃 ]221. 最大正方形LeetCode動態規劃
- “入城者”拼多多:愛“拼”才能贏
- 拼JSONJSON
- 1139. 最大的以 1 為邊界的正方形
- 2024.08.25拼多多
- 拼高薪、拼福利、拼補貼,上海遊戲大廠成熱門求職聖地?高薪遊戲求職
- 歡樂拼購商城系統開發,Viiva購歡樂拼購拼團模式介紹模式
- 如何自己做小程式拼團,實體店怎麼做拼團【拼團連結生成工具】
- 尤拉計劃547:帶洞正方形內任意點間距離
- 七人拼團系統開發即拼商城模式模式
- 拼多多API:拼多多獲得搜尋詞統計 APIAPI
- 拼多多商品詳情介面,拼多多百億補貼資料介面,拼多多優惠券介面程式碼教程
- cad游標大小怎麼調 cad游標中心正方形大小設定
- 拼多多API介面:拼多多根據ID取商品詳情 APIAPI
- 拼多多API:拼多多根據關鍵詞取商品列表 APIAPI
- 拼多多內推啦
- webstorm(二):拼寫warningWebORM
- 數倉+admin拼團
- 全民拼購模式玩法模式
- FigrCollage 照片拼貼工具
- “遊戲公司”拼多多遊戲
- 拼多多商家如何規避拼多多店鋪出現的差評?
- 拼多多如何做爆款?拼多多爆款玩法是什麼?
- 類似拼多多,多商戶拼團商城(開源),用thinkphp5開發的拼團開源系統PHP
- canvas拼圖功能實現Canvas