以下の様な、「階段の上り方」の問題です。
![](https://i0.wp.com/taki-lab.site/bocci/wp-content/uploads/2022/11/9f6d4c6acb04097b38896f39f7c5e61e.png?resize=474%2C213&ssl=1)
それぞれの段に行くまでに何通りあるか、というのを考えます。
0段目はスタート地点なので、1通り、
1段目は0段目からでしか行けないので1通り、
2段目は0段目から来るケースと1段目からケースがあるから、0段目と1段目の合計値、
それ以降はi段目はi-1段目とi-2段目の合計値となります。
最終的にN段目の合計値を出力すればOKです。
public int UpsideStairs(int N)
{
int[] dp = new int[45];
for(int i = 0; i <= N; i++)
{
if(i <= 1)
{
dp[i] = 1;
}
else
{
dp[i] = dp[i - 1] + dp[i - 2];
}
}
return dp[N];
}
![日々の出来事ランキング](https://i0.wp.com/taki-lab.site/bocci/wp-content/uploads/2019/12/a72f208ffbb7386a5edac6282ebb8d1b.png?w=474)