for (int i = index + 1; i <= s.size(); i++) { if (isPalindrome(s, index, i - 1)) { path.push_back(s.substr(index, i - index)); dfs(i, s); path.pop_back(); } } }
boolisPalindrome(string& s, int l, int r){ if (l >= r) { returntrue; } if (dp[l][r] != -1) { return dp[l][r]; } int& res = dp[l][r]; if (s[l] != s[r]) { res = 0; return res; } res = isPalindrome(s, l + 1, r - 1); return res; } };