上次整理了一些牛客网上华为在线编程题的练习,华为在线编程整理 今天继续更新一些
华为在线OJ练习
统计每月兔子的总数
题目描述
有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
/**
* 统计出兔子总数。
*
* @param monthCount 第几个月
* @return 兔子总数
*/
public static int getTotalCount(int monthCount)
{
return 0;
}
输入描述:
输入int型表示month
输出描述:
输出兔子总数int型
解题思路
代码实现
- 先来一个比较好理解的代码,但是写起来比较多了
#include <iostream>
using namespace std;
int count(int mouth)
{
int sum = 0;
if(mouth == 1)
sum = 1;
else if(mouth == 2)
sum = 1;
else if(mouth == 3)
sum = 2;
else
sum = count(mouth - 1) + count(mouth - 2);
return sum;
}
int main()
{
int mouth;
while(cin >> mouth)
{
cout << count(mouth) << endl;
}
return 0;
}
- 在来一个比较少的代码,其实效率差不多,但是简洁很多了
#include <iostream>
using namespace std;
int main(){
int m;
while (cin >> m){
int a = 1, b = 0, c = 0;//a:一个月兔子数,b:两个月兔子数,c:三个月兔子个数
while (--m){//每过一个月兔子数变化
c += b;
b = a;
a = c;
}
cout << a + b + c << endl;
}
}