解法.動的計画法
動的計画法で求める.dp[i][j] を連続部分列 と
の等しい部分列の数と定義する.このとき漸化式は,
・ の場合:
dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]
・ の場合:
dp[i][j] += dp[i - 1][j] + dp[i][j - 1]
となる.ただし,dp[i][0] と dp[0][j] の値は 1 に初期化をする(空の部分列).
上の漸化式は, の場合は連続部分列
と
の等しい部分列の末尾に
と
をそれぞれ加えることによって新たな等しい部分列を構成することができることを表している.これは,
の場合に新たに構成される部分列の数
dp[i - 1][j - 1] を加えている.
計算時間: