如果你的初始化代码是这样写的:
memset(f, 0x3f3f3f3f, sizeof(f)); for(int i = 1; i <= n; i ++) f[i][i] = 0;
则需要补充长度为2的情况:
for(int i = 2; i <= n; i ++) if(a[i] == a[i - 1]) f[i - 1][i] = 0; else f[i - 1][i] = 1;