动态规划处理长方形分割为正方形问题

动态规划主要是采用递推以及局部结果复用来进行计算处理。比较清晰的一个例子就是斐波拉契数列,f(n) = f(n – 1) + f(n – 2)

把每次的计算结果保存起来,就可以方便的得到下一个数据了。这样的规划处理方式比直接递归处理要快很多。

 

动态规划的经典应用是背包问题。

https://blog.csdn.net/chanmufeng/article/details/82955730

 

这里讨论长方形切分为正方形的问题,每次把边长为整数的长方形一分为二,求全部为正方形的最小个数。

这里我们讨论的是每次一分为二,所以不是完美正方形问题,

 

完美正方形

扫描二维码关注公众号,回复: 12303573 查看本文章

 

 

对于 5 *6 的长方形,采用贪婪法处理,先切一个5*5的,再对另一个1*5的进行切分,这样总共有6个正方形,

 

 

但还有更少的切分方法:

 

处理思路:采用枚举的动态规划方案,找到最优方式,

F(W, H) = 1  W = H 时

        Min( F(W – a, H) + F(a, H) )  a = 1, 2, … W/2

        Min (F(W, a) + F(W, H – a) )  a = 1, 2, … H./2

 

这样枚举填表,就可以找到最优方案

 

同样的原理,也可以处理长方体分割为正方体问题。

 

 

 

猜你喜欢

转载自blog.csdn.net/aaajj/article/details/104187385
今日推荐