1. 程式人生 > >動態規劃之分蛋糕

動態規劃之分蛋糕

描述:
有一塊矩形蛋糕,寬和高分別是整數w、h。現要將其切成m塊小蛋糕,每個小蛋糕都必須是矩形、且寬和高均為整數。切蛋糕時,每次切一塊蛋糕,將其分成兩個矩形蛋糕。請計算:最後得到的m塊蛋糕中,最大的那塊蛋糕的面積下限。

解題思路:
設ways(w,h,m)表示寬為w、高為h的蛋糕,被切m刀後,最大的那塊蛋糕的面積最小值。題目就是要求ways(W,H,M-1)
邊界條件:

 w*h<m+1  
 INF m==0   w*h  

遞推式:
SV為第一刀豎著切時能得到的最好結果,SH為第一刀橫著切時能得到的最好結果,則ways(w,h,m)=min(SV,SH)
SV=min{Si,i=1…w-1}
其中 Si=為第一刀左邊寬為i的情況下的最好結果。
Si=min{max(ways(i,h,k),ways(w-i,h,m-1-k)),k=0…m-1}