98% easy to understand
\tclass Solution {\n\tpublic:\n\t\tint sz;\n\t\tint par[101][101],mem[101][101];\n\t\tint numofpar(string &s,int i,int j){\n\t\t\tint ans=0;\n\t\t\twhile(i<j){\
\tclass Solution {\n\tpublic:\n\t\tint sz;\n\t\tint par[101][101],mem[101][101];\n\t\tint numofpar(string &s,int i,int j){\n\t\t\tint ans=0;\n\t\t\twhile(i<j){\n\t\t\t\tans+=(s[i]!=s[j]);\n\t\t\t\ti++,j--;\n\t\t\t}\n\t\t\treturn ans;\n\t\t}\n\t\tint solve(int i,string &s,int k){\n\t\t\tif(k==1)return par[i][sz-1];\n\t\t\tint &ret=mem[i][k];\n\t\t\tif(ret!=-1)return ret;\n\t\t\tret=INT_MAX-1003;\n\t\t   // if(sz-i<k)return ret;\n\t\t\tfor(int j=i;j<sz;j++){\n\t\t\t\tret=min(ret,solve(j+1,s,k-1)+par[i][j]);\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t\tint palindromePartition(string s, int k) {\n\t\t\tsz=s.size();\n\t\t\tfor(int i=0;i<sz;i++){\n\t\t\t\t for(int j=i;j<sz;j++){\n\t\t\t\t\tpar[i][j]=numofpar(s,i,j);\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemset(mem,-1,sizeof mem);\n\t\t\treturn solve(0,s,k);\n\t\t}\n\t};
[]