解题思路:本题解有两种解题思路,利用递推与递归的解决方法
主要公式: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语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:483 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:542 |
简单的a+b (C语言代码)浏览:577 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:326 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1918 |
蛇行矩阵 (C语言代码)浏览:504 |
最好的,浏览:563 |
小O的乘积 (C++代码)浏览:754 |
C二级辅导-公约公倍 (C语言代码)浏览:1311 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:406 |