memset(dp,0,sizeof(dp)); for(int i=0;i<len;i++) dp[i][i]=1; for(int i=1;i<len;i++) { int temp=0; for(int j=0;j+i<len;j++) { if(th[j]==th[j+i]) temp=dp[j+1][j+i-1]+2; else temp=max(dp[j+1][j+i],dp[j][j+i-1]); dp[j][j+i]=temp; } } printf("%d\n",dp[0][len-1]);