第三题: 因为只要求输出最多层数,所以得出一个书的排列数组太麻烦了,这种问题通常用动态规划能简化不少。 动态规划 思路:如果有n本书,那么可以设一个数组表示在前k本书可以最多叠多少层。 假设当前为i本,那么在前i本它的最大层数是Max(dp[j]+1),这个j怎么找呢,其实就是0到i-1本书中满足宽,高分别小于第i本的宽,高的书。 所以核心部分是两层循环,一层是0-n-1,是为了得出每一个数组元素的值,另一层是0-i,是为了多次比较确定叠的最多层数。 代码就略啦