您可以使用动态编程解决问题。
按高度对剧团进行排序。为简单起见,假定所有高度h_i和权重w_j是不同的。因此,h_i是一个递增的序列。
我们计算一个序列T_i,其中T_i是一个塔,其中人i在最大大小的顶部。T_1就是{1}。我们可以从较早的T_j推导出后续的T_k
-找到最大的塔T_j,它可以承受k的重量(w_j <w_k)并在其上站k。
剧团中可能最大的塔就是T_i中最大的塔。
该算法花费O(n ** 2)时间,其中n是剧团的基数。

您可以使用动态编程解决问题。
按高度对剧团进行排序。为简单起见,假定所有高度h_i和权重w_j是不同的。因此,h_i是一个递增的序列。
我们计算一个序列T_i,其中T_i是一个塔,其中人i在最大大小的顶部。T_1就是{1}。我们可以从较早的T_j推导出后续的T_k
-找到最大的塔T_j,它可以承受k的重量(w_j <w_k)并在其上站k。
剧团中可能最大的塔就是T_i中最大的塔。
该算法花费O(n ** 2)时间,其中n是剧团的基数。