解题思路:本题解有两种解题思路,利用递推与递归的解决方法
主要公式:f(n) = f(n - 1) + f(n - 3)
注意事项:另外递归的方法对于本题时间要求是超时的,仅供参考学习
参考代码:
递推:
#include <iostream> using namespace std; int main(){ int n; int a[55] = {0,1, 2, 3 ,4}; for(int i = 5 ; i <= 55 ;i++){ a[i] = a[i - 1] + a[i - 3]; } while(cin >> n){ if(n == 0) return 0; cout << a[n] << endl; } return 0; }
递归:(超时)
#include <iostream> using namespace std; int dfs(int n){ if(n <= 4) return n; else if(n >= 5 && n <= 55) return dfs(n - 1 ) + dfs( n - 3); } int main(){ long long int x; while(scanf("%d\n" , &x)){ if (x == 0) break; printf("%d\n", dfs(x)); } return 0; }
0.0分
2 人评分
不容易系列 (C语言代码)浏览:660 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:703 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:687 |
C语言训练-排序问题<2> (C++代码)浏览:881 |
C语言训练-计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m) (C语言代码)浏览:781 |
剪刀石头布 (C语言代码)不知道怎么直接在scanf中用枚举变量浏览:1307 |
众数问题 (C语言代码)浏览:823 |
Wu-求圆的面积 (C++代码)浏览:1887 |
【计算两点间的距离】 (C语言代码)浏览:1479 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:326 |