【杭电oj刷题】母牛的故事

1、母牛的故事 原题展示:

【杭电oj刷题】母牛的故事_第1张图片

2、题目讲解:

这个题还是递归和找规律的问题,做这种问题,就需要自己手动写一段排列,找其中的规律,无非就是递归问题。找到规律后就可以使用代码来实现这个功能即可。

这里面有一个坑,那就是题目说的是第四年年初的母牛会生一头小母牛,其实这头母牛才长了整三年,

第n年: n=1 n=2 n=3 n=4 n=5 n=6 n=7 n=8 n=9
fn头牛? f1=1 f2=2 f3=3 f4=4 f5=6 f6=9 f7=13 f8=19 f9=28

手动推导如上:

可以看出规律了,以n = 6年为例,f6=9=6+3=f5(6) + f3那一年的三头在 f3到f6 这三年生的母牛(三头母牛各生一个=3只),也可以再验证其他年。

好了,规律已经找到,那就开始 AC 代码吧!

3、AC代码讲解:

3.1、递归代码

简洁明了,但是运行效率很低。

#include
using namespace std;

int loop(int x){
    if(x<4)
        return x;
    return loop(x-1)+loop(x-3);
}

int main(){
    int x;
    while(cin>>x, x){
        cout<

3.2、使用数组

#include
#include
using namespace std;


int main(){
    int x;
    int arr[56] = {0, 1, 2, 3};
    for(int i=0;i<=55;++i){
        arr[i] =arr[i-1] + arr[i-3];
    }
    while(cin>>x, x){
        cout<

总结

多动手找规律,有问题,多多记录。

参考文章:

https://blog.csdn.net/sxhelijian/article/details/42609353

你可能感兴趣的:(【杭电oj刷题】母牛的故事)