0
1

paizaラーニング問題集「【階段の上り方】階段の上り方3」を解いてみた

Last updated at Posted at 2024-09-17

▼感想:

n=5, a=2, b=3, c=何でもよい とします。
cの値によらず、
5段の階段を上る方法は少なくとも1通り以上存在すると思います。
1歩目で2段(a)、2歩目で3段(b)行けば、5段になるからです。

しかし、どうも違うようです。dp[5]は0です。
dpの値を書き出したところ、そうなりました。

image.png

題意を誤解しているかもしれません。
そもそも、まだDPのことを理解できていないのかもしれません。
もう少し考えてみたいと思います。

▼コード:

########## 処理0(準備) インプット,リスト定義など ###########

n,a,b,c = map(int,input().split())

########## 処理1 漸化式の定義、計算、出力 ##########

dp = [0]*(30+1)

dp[0] = 1

for i in range(1,n+1):
    
    if i >= a:
        dp[i] += dp[i-a]

    if i >= b:
        dp[i] += dp[i-b]

    if i >= c:
        dp[i] += dp[i-c]

print(dp[n])
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1