正解は ク
文字列パターンマッチング(部分文字列検索)プログラムのトレースで、特定の行(β行)が条件式が真になる回数を数える問題です。プログラムはdata配列からkey配列のパターンを探す総当たり(ブルートフォース)アルゴリズムです。search({"a","b","a","b","c","a","b","c"}, {"a","b","c"})を呼び出した場合のトレース:dataは8文字、keyは3文字。外側ループi(dataの開始位置):1〜6(8-3+1=6回)。内側ループj(keyの各文字を比較):1〜3。β行は「data[i+j-1] = key[j](またはこれに類した文字一致チェック)」です。i=1のとき:a=a✓、b=b✓、a≠c✗(2回一致)。i=2のとき:b≠a✗(0回一致、即終了)。i=3のとき:a=a✓、b=b✓、c=c✓(3回一致、パターン発見)。i=4のとき:b≠a✗(0回一致)。i=5のとき:a=a✓、b=b✓、c=c✓(3回一致、パターン発見)。i=6のとき:b≠a✗(0回一致)。β行の真の回数合計:2+0+3+0+3+0 = 8回。問題の正解はh。
パターンマッチングのトレース:各開始位置iで内側ループをトレースし、文字が一致するたびにβ行の「真」をカウント。不一致で内側ループが終了する場合も途中の一致分はカウントに含める。表を作って整理するのが確実。