问题描述
输入格式
输出格式
样例输入
4
样例输出
5
题解
萌新一天可以吃一块或两块巧克力,问萌新吃完N块巧克力的方案数
设f[i]表示吃完n块巧克力的方案数
由题干知 f[1]=1, f[2]=2
对于i>2,假设萌新今天吃完了i块巧克力,并且已经算出f[1]到f[i-1]的值
如果今天萌新吃一块巧克力,那么到昨天为止一共吃了i-1块巧克力,有f[i-1]种方案
如果今天萌新吃两块巧克力,那么到昨天为止一共吃了i-2块巧克力,有f[i-2]种方案
所以今天吃完i块巧克力的方案数为两种情况的方案数之和,即f[i]=f[i-1]+f[i-2]
1 #include <stdio.h> 2 3 int f[50]; 4 int Func(int n) 5 { 6 f[1]=1; f[2]=2; 7 int i; 8 for (i=3;i<=n;i++) 9 f[i]=f[i-1]+f[i-2]; 10 return f[n]; 11 } 12 13 int main( ) 14 { 15 int n; 16 scanf("%d",&n); 17 printf("%d ",Func(n)); 18 return 0; 19 }