该题大部分题解说f[i][j],里面存的值是左端点为j,能合并出i这个数字的右端点的位置
但初始化f[read()][i]=i+1;
实际上存的值是右端点位置+1。
猜测这种做法为了方便判断转移是否合法,判一下f[i-1][f[i-1][j]]是否为0就可以了。
而我的代码中存的是右端点位置,判断函数+转移方程如下:
if(f[i-1][j]&&f[i-1][f[i-1][j]+1]) f[i][j]=max(f[i][j],f[i-1][f[i-1][j]+1]);
若f[i-1][j]==0,f[i-1][j]+1==1,f[i-1][f[i-1][j]+1]不一定为0了。