[伯俊/python/9095]1.2.3加算


題:1、2、3を合わせる
この問題はよく見られるdp問題である.
t=int(input())
for _ in range(t):
    n=int(input())
    dp=[0]*(n+1)
    dp[1]=1
    dp[2]=2
    dp[3]=4
    for i in range(4,n+1):
        dp[i]=dp[i-1]+dp[i-2]+dp[i-3]
    print(dp[n])
最初はこのように解いたが、実行中にエラーが発生した.1からnまで求めるのは間違いの原因です.
t=int(input())
def plus(n):
    if n==1:
        return 1
    elif n==2:
        return 2
    elif n==3:
        return 4
    else:
        return plus(n-1)+plus(n-2)+plus(n-3)
for _ in range(t):
    n=int(input())
    print(plus(n))
人材を利用して問題を解決した.