c++ 探討奶牛生子的問題
更新時間:2013年05月29日 11:16:47 作者:
一只剛出生的奶牛,第4年開始生一只奶牛(假設(shè)只生母牛),以后每年生一只。現(xiàn)在給你一只剛出生的奶牛,求20年后有多少奶牛
奶牛生子問題
描述:一只剛出生的奶牛,第4年開始生一只奶牛(假設(shè)只生母牛),以后每年生一只?,F(xiàn)在給你一只剛出生的奶牛,求20年后有多少奶牛?
自己試著寫了兩個方法,不足之處,還望指正!
// CowsChildren.cpp : 定義控制臺應(yīng)用程序的入口點。
#include "stdafx.h"
#include <iostream>
using namespace std;
//
int CalCowsNum1(int iYear)
{
int iCowNum = 1;
for (int iCnt = 1; iCnt <= iYear; iCnt++)
{
if (iCnt >= 4) //第四年奶牛數(shù)量開始增多
{
if ((iYear - iCnt) >= 4) //第2個四年,在第一個四年內(nèi)出生的奶牛也開始生產(chǎn)
{
iCowNum += CalCowsNum1(iYear - iCnt);
}
else
{
iCowNum ++;
}
}
}
return iCowNum; //返回奶牛總數(shù)
}
//仿照斐波那契數(shù)列寫的程序,當(dāng)年的奶牛數(shù)量等于去年的奶牛數(shù)量加上新生的奶牛數(shù)量
//而當(dāng)年新生的奶牛數(shù)量,又等于四年之前擁有的奶牛數(shù)量,因為四年之前的奶牛到當(dāng)年
//都有了生成能力,并且一年生一個崽子(按照題意,生產(chǎn)的都是母牛,呵呵)
int CalCowsNum2(int iYear)
{
int iCowNum = 1;
if (iYear == 1 || iYear ==2 || iYear ==3) //前三年數(shù)量是1
{
return iCowNum;
}
if (iYear == 4)
{
iCowNum = 2; //第四年數(shù)量是2
return iCowNum;
}
return CalCowsNum2(iYear - 1) + CalCowsNum2(iYear - 4); //當(dāng)年份大于4時,數(shù)量為前一年的數(shù)量加上四年前的數(shù)量
} //即f(n) = f(n-1) + f(n-4) (n>4時)
int _tmain(int argc, _TCHAR* argv[])
{
int iYear = 0;
cout << "Please input required years: " ;
cin >> iYear;
cout << endl << "The years you input is " << iYear
<< " and the number of cows is " << CalCowsNum1(iYear) << " "
<< CalCowsNum2(iYear)<< endl;
return 0;
}
描述:一只剛出生的奶牛,第4年開始生一只奶牛(假設(shè)只生母牛),以后每年生一只?,F(xiàn)在給你一只剛出生的奶牛,求20年后有多少奶牛?
自己試著寫了兩個方法,不足之處,還望指正!
復(fù)制代碼 代碼如下:
// CowsChildren.cpp : 定義控制臺應(yīng)用程序的入口點。
#include "stdafx.h"
#include <iostream>
using namespace std;
//
int CalCowsNum1(int iYear)
{
int iCowNum = 1;
for (int iCnt = 1; iCnt <= iYear; iCnt++)
{
if (iCnt >= 4) //第四年奶牛數(shù)量開始增多
{
if ((iYear - iCnt) >= 4) //第2個四年,在第一個四年內(nèi)出生的奶牛也開始生產(chǎn)
{
iCowNum += CalCowsNum1(iYear - iCnt);
}
else
{
iCowNum ++;
}
}
}
return iCowNum; //返回奶牛總數(shù)
}
//仿照斐波那契數(shù)列寫的程序,當(dāng)年的奶牛數(shù)量等于去年的奶牛數(shù)量加上新生的奶牛數(shù)量
//而當(dāng)年新生的奶牛數(shù)量,又等于四年之前擁有的奶牛數(shù)量,因為四年之前的奶牛到當(dāng)年
//都有了生成能力,并且一年生一個崽子(按照題意,生產(chǎn)的都是母牛,呵呵)
int CalCowsNum2(int iYear)
{
int iCowNum = 1;
if (iYear == 1 || iYear ==2 || iYear ==3) //前三年數(shù)量是1
{
return iCowNum;
}
if (iYear == 4)
{
iCowNum = 2; //第四年數(shù)量是2
return iCowNum;
}
return CalCowsNum2(iYear - 1) + CalCowsNum2(iYear - 4); //當(dāng)年份大于4時,數(shù)量為前一年的數(shù)量加上四年前的數(shù)量
} //即f(n) = f(n-1) + f(n-4) (n>4時)
int _tmain(int argc, _TCHAR* argv[])
{
int iYear = 0;
cout << "Please input required years: " ;
cin >> iYear;
cout << endl << "The years you input is " << iYear
<< " and the number of cows is " << CalCowsNum1(iYear) << " "
<< CalCowsNum2(iYear)<< endl;
return 0;
}
相關(guān)文章
c++ Protobuf解決數(shù)據(jù)傳輸瓶頸面試精講
這篇文章主要介紹了c++ Protobuf解決數(shù)據(jù)傳輸瓶頸利器面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10C++?opencv實現(xiàn)在圖片上畫一條線示例代碼
這篇文章主要為大家介紹了C++?opencv實現(xiàn)在圖片上畫一條線的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05深入理解C++中public、protected及private用法
這篇文章主要介紹了C++中public、protected及private用法,對于C++面向?qū)ο蟪绦蛟O(shè)計來說是非常重要的概念,需要的朋友可以參考下2014-08-08C++實現(xiàn)LeetCode數(shù)組練習(xí)題
這篇文章主要介紹了C++實現(xiàn)LeetCode的幾道數(shù)組練習(xí)題,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08