有一块n x m 格的巧克力,我们要把它切成n x m 个 1x1的小块,只能沿直线切,而且不能同时几块同时的切。
直接先考虑1列,可以用n-1次掰成全1。用m-1次将巧克力全部掰成1列,然后每列都是一样的操作。就是 m-1+m * (n-1) -> n * m - 1
先只考虑一边,我们把它分成全是1.
对于任意的长度,都可以像二叉树那样分解(用网上的一种完全二叉树的定义来说下图即为完全二叉树)(也可以随便分解,但这里用二叉树的性质去分解)。如图
可以知道,分解的次数就为非叶子节点的个数,设为x . 则总点数为 2x+1 (完全二叉树的性质), 又由一个数可以分解成2n-1个点(归纳法) 故 x = n-1.
即 最少的操作次数为 m-1 + m*(n-1) = n*m-1.
后面 (n-1) * m 表示有m个长度为n的需要分。