c++ 探討奶牛生子的問題
更新時(shí)間:2013年05月29日 11:16:47 作者:
一只剛出生的奶牛,第4年開始生一只奶牛(假設(shè)只生母牛),以后每年生一只。現(xiàn)在給你一只剛出生的奶牛,求20年后有多少奶牛
奶牛生子問題
描述:一只剛出生的奶牛,第4年開始生一只奶牛(假設(shè)只生母牛),以后每年生一只?,F(xiàn)在給你一只剛出生的奶牛,求20年后有多少奶牛?
自己試著寫了兩個(gè)方法,不足之處,還望指正!
// CowsChildren.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
#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個(gè)四年,在第一個(gè)四年內(nèi)出生的奶牛也開始生產(chǎn)
{
iCowNum += CalCowsNum1(iYear - iCnt);
}
else
{
iCowNum ++;
}
}
}
return iCowNum; //返回奶??倲?shù)
}
//仿照斐波那契數(shù)列寫的程序,當(dāng)年的奶牛數(shù)量等于去年的奶牛數(shù)量加上新生的奶牛數(shù)量
//而當(dāng)年新生的奶牛數(shù)量,又等于四年之前擁有的奶牛數(shù)量,因?yàn)樗哪曛暗哪膛5疆?dāng)年
//都有了生成能力,并且一年生一個(gè)崽子(按照題意,生產(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ù)量加上四年前的數(shù)量
} //即f(n) = f(n-1) + f(n-4) (n>4時(shí))
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年后有多少奶牛?
自己試著寫了兩個(gè)方法,不足之處,還望指正!
復(fù)制代碼 代碼如下:
// CowsChildren.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
#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個(gè)四年,在第一個(gè)四年內(nèi)出生的奶牛也開始生產(chǎn)
{
iCowNum += CalCowsNum1(iYear - iCnt);
}
else
{
iCowNum ++;
}
}
}
return iCowNum; //返回奶??倲?shù)
}
//仿照斐波那契數(shù)列寫的程序,當(dāng)年的奶牛數(shù)量等于去年的奶牛數(shù)量加上新生的奶牛數(shù)量
//而當(dāng)年新生的奶牛數(shù)量,又等于四年之前擁有的奶牛數(shù)量,因?yàn)樗哪曛暗哪膛5疆?dāng)年
//都有了生成能力,并且一年生一個(gè)崽子(按照題意,生產(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ù)量加上四年前的數(shù)量
} //即f(n) = f(n-1) + f(n-4) (n>4時(shí))
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語(yǔ)言實(shí)現(xiàn)模擬銀行系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)模擬銀行系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06c++ Protobuf解決數(shù)據(jù)傳輸瓶頸面試精講
這篇文章主要介紹了c++ Protobuf解決數(shù)據(jù)傳輸瓶頸利器面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10C++?opencv實(shí)現(xiàn)在圖片上畫一條線示例代碼
這篇文章主要為大家介紹了C++?opencv實(shí)現(xiàn)在圖片上畫一條線的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05深入理解C++中public、protected及private用法
這篇文章主要介紹了C++中public、protected及private用法,對(duì)于C++面向?qū)ο蟪绦蛟O(shè)計(jì)來(lái)說(shuō)是非常重要的概念,需要的朋友可以參考下2014-08-08利用C++實(shí)現(xiàn)一個(gè)線程安全的map
這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一個(gè)線程安全的map(使用ChatCPT生成),代碼是通過(guò)兩輪對(duì)話完善的,感興趣的小伙伴可以了解一下2023-05-05C++實(shí)現(xiàn)LeetCode數(shù)組練習(xí)題
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode的幾道數(shù)組練習(xí)題,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08