"""
设计:Python程序设计
作者:初学者
日期:2022年 03月 29日
"""
# 例88
# 将火柴摆放成正方形
# 1.
# 问题描述
# 判断是否可以利用所有火柴棍制作一个正方形。不破坏任何火柴棍,将他们连接起来,并且每个火柴棍必须使用一次。
# 输入是火柴棍的长度,输出位真或假,表示是否可以制作一个正方形。
# 2.
# 问题示例
# 输入火柴棍的长度[1, 1, 2, 2, 2], 输出True,因为用3个长度为2的火柴棍形成3个边,用2个长度为1的火柴棍作为第4个边,
# 能够组成正方形
# 3.
# 代码示例
class Solution:
# 参数nums:数组
# 返回布尔类型
def quadrate(self, nums):
def square(nums, pos, target):
if pos == len(nums):
return True
for i in range(4):
if target[i] >= nums[pos]:
target[i] -= nums[pos]
if square(nums, pos + 1, target):
return True
target[i] += nums[pos]
return False
if len(nums) < 4:
return False
numsum = sum(nums)
nums.sort(reverse=True)
if numsum % 4 != 0:
return False
target = [numsum / 4] * 4
return square(nums, 0, target)
# 主函数
if __name__ == '__main__':
s = Solution()
n = [1, 1, 2, 2, 2]
print("输入:", n)
print("输出:", s.quadrate(n))
将火柴摆放成正方形
最新推荐文章于 2022-08-02 16:16:17 发布