先写下思路
序列问题一般要向二分,递归,DP等方法上考虑
这里要用到DP
状态方程应该是
A(n)=max{A(n-1),A(n-1)+1};
何时+1是关键所在:
联想一下最长递增子序列问题,明显可以用O(n*n*n)解决该问题
利用 编程之美上的保存最大子序列数组的方法可以进一步优化到O(n*n)
这里也要用到KMP的模式思想,如果n-1序列上已经第一次匹配,则n序列上就只用比较max[2]上保存的序列位置
// by zjerry 思路不完整,未编程,暂时放一放
参考: