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

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

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

 

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

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

 

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

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

 

完美正方形

 

 

对于 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

 

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

 

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值