分蛋糕(动态规划)
描述 有一块矩形大蛋糕,长和宽分别是整数 w 、 h 。现要将其切成 m 块小蛋糕,每个小蛋糕都必须是矩形、且长和宽均为整数。切蛋糕时,每次切一块蛋糕,将其分成两个矩形蛋糕。请计算:最后得到的 m 块小蛋糕中,最大的那块蛋糕的面积下限。 假设 w = 4, h = 4, m = 4,则下面的切法可使得其中最大蛋糕块的面积最小。 假设 w = 4, h = 4, m = 3,则下面的切法会使得其中最大蛋糕块的面积最小: 输入 共有多行,每行表示一个测试案例。每行是三个用空格分开的整数w, h, m ,其中1 ≤ w, h, m ≤ 20 , m ≤ wh. 当 w = h = m = 0 时不需要处理,表示输入结束。 输出 每个测试案例的结果占一行,输出一个整数,表示最大蛋糕块的面积下限。 样例输入 4 4 4 4 4 3 0 0 0 样例输出 4 6 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 5 using namespace std; 6 7 const int INF = 0x3f3f3f3f; 8 int Minmax[22][22][22]; // Min[i][j][k]表示 i*j的蛋糕分成为k+1块(切k刀)最大的那块蛋糕的最小面积 9 10 int main() { 11 int w,