根据输入可以将整个队列划分成不同的区间,最后去求在这个队列中一共最多可以有多少个不相交的区间。
比如说对于第i个人,在其前方有x个人,在其后方有y个人,那么我们可以得到一个[x+1,y]的区间,用mark[x+1][y],记录在这个区间上有多少人。需要注意的是,mark[x+1][y]的值不能大于n-x-y。
记录之后,题目就转变成在一条连续的线段上,存在着很多不同的区间,我们需要求出的是最多有多少个区间可以不相交的存在在这个线段上,这个值即为最后的结果。状态转移公式为:dp[i]=Max(dp[j-1]+mark[j][i],dp[i])。