CPP36. 不死神兔问题
描述
有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第 n 个月的兔子对数为多少?输入描述
键盘输入任意一个正整数 n,n 的范围为 [1, 20]输出描述
输出第 n 个月兔子的对数示例1
输入:
1
输出:
1
示例2
输入:
2
输出:
1
示例3
输入:
3
输出:
2
示例4
输入:
4
输出:
3
示例5
输入:
5
输出:
5
示例6
输入:
6
输出:
8
C++ 解法, 执行用时: 2ms, 内存消耗: 392KB, 提交时间: 2022-02-09
#include <iostream> using namespace std; int getSum(int n); int main() { int n; cin >> n; cout << getSum(n) << endl; return 0; } //1 2 3 4 5 6 7 8 9 //1 1 2 3 5 8 int getSum(int n) { /* write your code here...... if(n==1||n==2) return 1; return getSum(n-1)+getSum(n-2);*/ if(n<=2) return 1; else{ int a=1,b=1; int sum=2; for(int i=3;i<=n;++i){ sum = a+b; b=a; a=sum; } return sum; } } //g(6)=g(5)+g(4)=8 //g(5)=g(4)+g(3)=5 //g(4)=g(3)+g(2)=3 //g(3)=g(2)+g(1)=2 //g(2)=1 //g(1)=1
C++ 解法, 执行用时: 2ms, 内存消耗: 396KB, 提交时间: 2021-12-05
#include <iostream> using namespace std; int getSum(int n); int main() { int n; cin >> n; cout << getSum(n) << endl; return 0; } int getSum(int n) { // write your code here...... if (n <= 2) return 1; else { int a = 1; int b = 1; int sum = 2; for (int i = 2; i < n; ++i) { sum = a + b; b = a; a = sum; } return sum; } return 0; }
C++ 解法, 执行用时: 2ms, 内存消耗: 404KB, 提交时间: 2021-11-16
#include <iostream> using namespace std; int getSum(int n); int main() { int n; cin >> n; cout << getSum(n) << endl; return 0; } int getSum(int n) { // write your code here...... if(n<3){ return 1; } else return getSum(n-1)+getSum(n-2); }
C++ 解法, 执行用时: 2ms, 内存消耗: 412KB, 提交时间: 2021-11-22
#include <iostream> using namespace std; int getSum(int n); int main() { int n; cin >> n; cout << getSum(n) << endl; return 0; } int getSum(int n) { // write your code here...... int sum=0; int num[n]; for(int i=0;i<n;i++) { num[0]=0; num[1]=1; num[i+2]=num[i+1]+num[i]; sum=num[n-2]+num[n-1]; } if(n==1) return 1; else return sum; }
C++ 解法, 执行用时: 2ms, 内存消耗: 412KB, 提交时间: 2021-10-17
#include <iostream> using namespace std; int getSum(int n); int main() { int n; cin >> n; cout << getSum(n) << endl; return 0; } int getSum(int n) { // write your code here...... if(n<1 || n >20) return -10086; int a = 0, b = 1; while( --n ) { int tmp = b; b += a; a = tmp; } return b; }