题意:给你一串序列,让你序列中找出 类似这样的 1 2 3 4 5 4 3 2 1 的最大长度的子串,子串特性:1长度可以写成2*n+1,其中前n+1的序列是严格上升的,后n+1个是严格递减的;
一开始我的思路是这样的:第一遍先dp一遍,找出所有的递增序列,并且记录上升序列最后一个元素的位置,第二遍 从这些上升序列的最后一个元素的位置开始寻找,若能找到一个长度与上升相等的 下降序列就停止可以输出了,而且要从最长的开始找,这个想法 个人认为是没有什么问题的,但是写起来比较难处理,很难表达,后来又重新换了个思路:
先顺着dp一遍,再逆着dp一遍,都dp上升序列,第二遍dp的是它的逆序,而且对于符合性质的子串 他们的 dp1[i] == dp2[n - i + 1],这个稍微推一下就知道了,这样就比较好处理了,直接正反一次 nlong方法即可,但是原先的版子有问题,后来换了个版子过了,
#include
#include
#include
#include
#include
#include
#include
#include
#include