今天做的是一道動(dòng)態(tài)規(guī)劃的題目的榛,從最簡單的做起结澄,本人現(xiàn)在都比較喜歡在計(jì)蒜客上面做題目
假設(shè)你現(xiàn)在正在爬樓梯赞辩,樓梯有n級朴沿。每次你只能爬1級或者2級猜谚,那么你有多少種方法爬到樓梯的頂部?
輸入格式
第一行輸入一個(gè)整數(shù)n(1≤n≤50)赌渣,代表樓梯的級數(shù)魏铅。
輸出格式
輸出爬到樓梯頂部的方法總數(shù)。
樣例輸入
5
樣例輸出
8
解析
這個(gè)題目很簡單坚芜,一共有n級樓梯览芳,我們從先上往下看,要爬到n货岭,起碼要爬到n-1然后再爬1級或者爬到n-2再爬2級路操。意思就是爬到第n級的方法總數(shù)等于爬到n-1級的方法總數(shù)加爬到n-2級的方法總數(shù)。
即F(n)=F(n-1)+F(n-2)? 已知條件F(1)=1? F(2)=2
然而這是一種遞歸的思路自頂向下千贯,動(dòng)態(tài)規(guī)劃的思路自底向上
從已知的F(1) F(2)推出F(3)屯仗,再推出F(4)...以此類推
代碼
int d[55]={0};
int main()
{
d[0]=1;
d[1]=1;
d[2]=2;
int n=0;
scanf("%d",&n);
for(int i=3;i<=n;i++)
{
d[i]=d[i-2]+d[i-1];
}
printf("%d\n",d[n]);
return 0;
}