兔子产子问题

兔子产子问题:

有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?

根据题意列出表格:

根据表格分析出第一,二月兔子总数为1,从第三月开始兔子总数等于该月前面两个月兔子总数之和。

解题思路:

运用数组的知识,给a[1]以及a[0]赋值,利用a[i]=a[i-1]+a[i-2]算出每个月的总数,数组的下表等于月数减1,按照规定的格式输出每月的总数即可。

代码:

#include<iostream>

#include<iomanip>

using namespace std;

int main()

{

    int a[30]={1,1};//前两个月总数赋值

    cout<<setw(12)<<a[0]<<setw(12)<<a[1];//按格式输出前两个月总数

    int temp=2;//记录数据来输出换行

    for(int i=2;i<30;i++)//根据前两个月总数求每月总数

    {

        a[i]=a[i-1]+a[i-2];

        temp++;

        cout<<setw(12)<<a[i];

        if(temp%4==0)

        {

            cout<<endl;

            temp=0;

        }

    }

    return 0;

}

 

解题思路:

利用迭代法求出每个月的总数并直接输出

代码:

#include<iostream>

#include<iomanip>

using namespace std;

int main()

{

    int f1=1,f2=1,f;

    cout<<setw(12)<<f1<<setw(12)<<f2;

    for(int i=3;i<31;i++)

    {

        f=f1+f2;

        cout<<setw(12)<<f;

        f1=f2;

        f2=f;

        if(i%4==0)

        cout<<endl;

    }

    return 0;

}

 

拓展:

仅利用f1与f2来储存月份的兔子总数

代码:

#include<iostream>

#include<iomanip>

using namespace std;

int main()

{

    int f1=1,f2=1;

    for(int i=1;i<16;i++)

    {

        cout<<setw(12)<<f1<<setw(12)<<f2;

        f1=f1+f2;

        f2=f1+f2;

        if(i%2==0)

        cout<<endl;

    }

    return 0;

}

 

该题体会:利用数组可以储存数据在需要时利用,学会了迭代法的利用以及如何改善迭代法

 

posted @   不如喝点  阅读(100)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示