Lv.4右かっこの個数
問題の説明
データ構造
解法
原理は
一般式を推測するために,いくつかの初期項を求める.
f(1) = 1, f(2) = 2 , f(3) = 5, f(4) = 14...
f(1) = ( )
f(2) = ( ) ( ), ( ( ) )
->f(4)=f(1)中充填3対+f(2)中充填2対+f(3)中充填1対+g(4)
...
以下に整理します.
f(3) = g(3) + f(1) * g(2) + f(2) * g(1) + g(3)
f(4) = g(4) + f(1) * g(3) + f(2) * g(2) + f(3) * g(1)
f(5) = g(5) + f(1) * g(4) + f(2) * g(3) + f(3) * g(2) + f(4) * g(1)
...
f(n) = g(n) + f(1) * g(n-1) + f(2) * g(n-2) + ... f(i) * g(n-i) + ... + f(n-1) * g(1)
g(2) = ( ( ) )
g(3) = ( ( ( ) ) ), ( ( ) ( ) ),
g(4) = ( ( ) ( ( ) ) ), ( ( ) ( ) ( ) ), ( ( ( ) ) ( ) ), ( ( ( ( ) ) ) ), ( ( ( ) ( ) ) )
...
()内にはn-1対の括弧があります.
n-1対のかっこを作成すると、f(n-1)の数になります.
すなわち,g(n)=f(n−1)であるため,一般項は以下のように整理される.
f(n) = f(n-1) * f(1) + f(n-2) * f(2) + ... + f(1) * f(n-1)
これは下図のように整理します.コード実装(JavaScript)
function solution(n) {
let Molecular = n + 1, denominator = n;
for (let i = 1; i < n; i++) {
Molecular *= n + 1 + i;
denominator *= n - i;
}
return Number(Molecular / denominator) / (n + 1);
}
ソース:プログラマReference
この問題について(Lv.4右かっこの個数), 我々は、より多くの情報をここで見つけました https://velog.io/@hamelln/Lv.4-올바른-괄호의-갯수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol