zoukankan      html  css  js  c++  java
  • <<信息学奥赛一本通>> 昆虫养殖 题解

    【题目描述】

    科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过X个月产卵),问过Z个月以后,共有成虫多少对?0≤X≤20,1≤Y≤20,X≤Z≤50。

    【输入】

    x,y,z的数值。

    【输出】

    过Z个月以后,共有成虫对数。

    【输入样例】

    1 2 8

    【输出样例】

    37

    这题从兔子生小兔子衍生出来的递推题。
    通过观察可以发现,成虫数量与幼虫数有关。而幼虫数又与成虫数有关。
    所以我们就可以发现这个题目要用 二个数组 去记录数量。

    按照惯例 设A(Adult)为成虫数,A[i]为当前i月的成虫数。C为幼虫数。
    用递推式:
    A[i] = A[i-1] + C[i-2] (这个月的成虫数 = 上月的成虫书 + 
                    前2个月的幼虫数-因为幼虫变为成虫了 )
    C[i] = y*A[i-x]  (而这个月的幼虫数 = 上X个月的成虫生的)
    #include <iostream>
    #define MAXN 50
    using namespace std;
    long long A[151],C[151];
    int main(){
        int x,y,z;
        cin >> x >> y >> z;
        for(int i=0;i<x;++i){//过X月开始出现幼虫 
            A[i] = 1;
            C[i] = 0;
        }
        for(int i=x;i<z+1;++i){
            C[i] = y*A[i-x];
            A[i] = A[i-1] + C[i-2]; 
        }
        cout << A[z] << endl; 
        return 0;
    }
     
  • 相关阅读:
    7.ps相关选项
    6.ps的大U和小u区别
    5.进程优先级
    4.状态间的六种转换情况
    3.进程的不同状态
    2.进程与程序的关系
    1.进程概念
    不换行
    for引用变量
    脚本进阶
  • 原文地址:https://www.cnblogs.com/--zz/p/10447523.html
Copyright © 2011-2022 走看看