本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
问题描述
当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。例如,对于一块两边分别为 5 和 3 的材料(记为 5×3),小明会依次切出 3×3、2×2、1×1、1×1 共 4 个正方形。现在小明有一块矩形的材料,两边长分别是 2019 和 324。请问小明最终会切出多少个正方形?
解决方案
要从一块矩形材料中切出最大的正方形,以矩形最短的一条边为正方形的边长,切割出最大正方形。因为按照一条边来切割正方形剩下的图形一定也会是一个矩形,所以我们可以将剩下的两条边进行长短的比较,然后将较长的那条边作为下一个切割的正方形的边长。我们按照编程思维,运用一个循环,加上条件语句,对两条边长度比较,长边减去短边的值,然后将切割数加一。
接下来展示完整的代码。
a = 2019 b = 324 count = 1 for i in ra |