while(k1<k2-1){ if(!f[l][k1]) ++k1; if(!f[k2][r]) --k2; if(f[l][k1]&&f[k2][r]&&f[l][k1]==f[k2][r]){ if(f[k1+1][k2-1]) f[l][r]=f[l][k1]+f[k1+1][k2-1]+f[k2][r]; k1++,k2--;//为什么这里能两个都变啊,为啥不可能出现k1还是现在的k1,k2变小后答案变大的情况呢 } if(f[l][k1]<f[k2][r]) k1++; if(f[l][k1]>f[k2][r]) k2--; }