Pythonにて、forループを用いたリスト更新が思い通りの結果にならないので解決して欲しいです
解決したいこと
AtCoderをPythonで解いている者です。
先日のABC242コンテストのC問題を解くことができず、
その原因もわからないので教えて欲しいです。
Pythonのリストに仕様について。
Pythonにてforループを使ってリストの中身を更新していくと、思い通りの結果になりません。
該当するソースコード
N = int(input())
A = [[0]*9 for _ in range(N-1)]
A[0] = [2,3,3,3,3,3,3,3,2]
if N == 2:
ans = A
else:
for i in range(1, N-1):
for j in range(9):
if j == 0:
A[i][0] = A[i-1][0] + A[i-1][1]
if j == 8:
A[i][8]= A[i-1][7] + A[i-1][8]
else:
A[i][j]= A[i-1][j-1] + A[i-1][j] + A[i-1][j+1]
ans = A
print(ans)
自分のやろうとしていること
N-1行、9列の二次元リストを考えていて、
0行目に[2, 3, 3, 3, 3, 3, 3, 3, 2]として
1<=i<=n-1 のiについて
i行目の1列目をA[i][0] = A[i-1][0]+ A[i-1][1]
i行目の2列目をA[i][2] = A[i-1][0]+ A[i-1][1] + A[i-1][2]
i行目の3列目をA[i][2] = A[i-1][1]+ A[i-1][2] + A[i-1][3]
...
i行目の8列目をA[i][7] = A[i-1][6]+ A[i-1][7] + A[i-1][8]
i行目の9列目をA[i][8] = A[i-1][7]+ A[i-1][8]
と更新していこうとしています。
例
N = 4として自分の[理想の出力]と[実際の出力]が以下の通りです。
例) N = 4 理想の出力結果
[[2, 3, 3, 3, 3, 3, 3, 3, 2],
[5, 8, 9, 9, 9, 9, 9, 8, 5],
[13, 22, 26, 27, 27, 27, 26, 22, 13]]
例) N = 4 実際の出力結果
[[2, 3, 3, 3, 3, 3, 3, 3, 2],
[7, 8, 9, 9, 9, 9, 9, 8, 5],
[20, 24, 26, 27, 27, 27, 26, 22, 13]]
何か原因がわかる方、教えていただきたいです。