2
假設,我有一個詞「沙拉」。我必須找出我可以從這個詞中刪除字母的方法的數量,以便它成爲一個迴文。由於刪除字母的順序而有兩種不同的方式被認爲是相同的。 「SALADS」的答案是15.如何將遞歸DP解決方案轉換爲迭代DP?
我已經使用遞歸DP解決了它。
string S;
int DP[65][65];
int DFS(int l, int r)
{
if(l==r) return 1;
if(l>r) return 0;
if(DP[l][r]!=-1) return DP[l][r];
DP[l][r]=0;
if(S[l]==S[r])
{
return DP[l][r] = 1 + DFS(l+1, r) + DFS(l, r-1);
}
else
{
return DP[l][r] = DFS(l+1, r) + DFS(l, r-1) - DFS(l+1, r-1);
}
}
int main()
{
S = "SALADS";
DFS(0, S.size()-1);
}
如何使用迭代DP解決此問題?