思路 以每个位置为中心,找它左边的递增序列长度的最大值,和它右边的递减序列长度的最大值。二者求和再加上本元素,就是合唱队的长度。 如何找左边递增序列长度的最大值呢? 设置一个数组left,初始化为0,从第2个元素开始遍历,以当前元素为中心点,向左遍历,如果左边的元素比中心点小,就进行三角不等式判断,保存原本长度和左边元素对应的长度+1。具体看代码吧。 for (int i = 1; i < n; i++) { for (int j = i - 1; j >= 0; j--) { if (q[j] < q[...