コーディングテスト練習記録
5752 ワード
2022.03.22 87日目
白駿13699号(点火式)
質問する
以下の点火式で定義される数列t(n)を考慮する.t(0)=1
t(n)=t(0)*t(n-1)+t(1)*t(n-2)+...+t(n-1)*t(0)
この定義に基づいて、t(1)=t(0)*t(0)=1
t(2)=t(0)*t(1)+t(1)*t(0)=2
t(3)=t(0)*t(2)+t(1)*t(1)+t(2)*t(0)=5
...
与えられた入力0≦n≦35に対して、t(n)を出力するプログラムを記述する.
私の答え
t(0)=1
t(n)=t(0)*t(n-1)+t(1)*t(n-2)+...+t(n-1)*t(0)
t(1)=t(0)*t(0)=1
t(2)=t(0)*t(1)+t(1)*t(0)=2
t(3)=t(0)*t(2)+t(1)*t(1)+t(2)*t(0)=5
...
import java.io.*;
import java.util.*;
public class Main {
static long[] dp;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
dp = new long[n + 1];
dp[0] = 1;
for (int i = 1; i <= n; i++) {
long temp = 0;
for (int j = i; j >= 1; j--) {
temp += dp[i - j] * dp[j - 1];
}
dp[i] = temp;
}
System.out.println(dp[n]);
}
}
考える
Reference
この問題について(コーディングテスト練習記録), 我々は、より多くの情報をここで見つけました https://velog.io/@jgjgill/코딩테스트-연습-기록-o7sx3x8lテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol