部分文字列の一致判定と出現回数を数える動的計画法
LeetCode 392: 文字列の包含関係判定
文字列 s が文字列 t の部分列であるかを確認する問題では、動的計画法(DP)による状態管理が有効です。
DPテーブルによるアプローチ
配列 match[i][j] を「s の先頭 i 文字と t の先頭 j 文字を比較した際の、一致した文字列の最大長」と定義します。
s[i-1] == t[j-1] の場合:末尾同士が一致するため、直前の一致長に1を加算しま ...
7月21日 21:47 投稿
動的計画法による部分列問題の解法
問題1:最長増加部分列
最長増加部分列(Longest Increasing Subsequence, LIS)問題は、与えられた数列から、要素が厳密に増加する順序で並んでいる最長の部分列を見つける問題です。
class Solution {
public:
int lengthOfLIS(vector<int>& arr) {
// 1. DPテーブルの作成
int size = arr.size();
vector<int> dp(size, 1) ...
5月15日 12:10 投稿