白駿9461波半数列


https://www.acmicpc.net/problem/9461
前のdp問題を解いたら、これは簡単だと思います.
これはNが5を超える限り[N-1]+[N-5]の値である.
T = int(input())
dp = [0] * 101
dp[0] = 1
dp[1] = 1
dp[2] = 1
dp[3] = 2
dp[4] = 2
dp[5] = 3
dp[6] = 4
dp[7] = 5
dp[8] = 7
dp[9] = 9

for _ in range(T):
    N = int(input())
    if N < 11:
        print(dp[N-1])
    else:
        for i in range(10, N):
            dp[i] = dp[i-1] + dp[i-5]
        print(dp[N-1])
最初はappendでやっていましたが、結果はいつも変なので、なぜこうなったのか悩んでしまいました.その結果,appendを用いるとリストが永久に変化し,数がappendを繰り返す現象が現れることが分かった.
dpは計算値を繰り返したくないのでappendは使えないことに気づき、そうすべきです.