社区
C#
帖子详情
重谈奶牛的问题
zh520
2009-04-17 09:27:07
一头奶牛从出生后的第四年开始生育小牛,以后每年生育一头.
给你一头刚出生的小奶牛,20年后共有多少头奶牛!!
在网上看到这个问题,希望大家帮忙解决一下
...全文
275
17
打赏
收藏
重谈奶牛的问题
一头奶牛从出生后的第四年开始生育小牛,以后每年生育一头. 给你一头刚出生的小奶牛,20年后共有多少头奶牛!! 在网上看到这个问题,希望大家帮忙解决一下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zh520
2009-04-20
打赏
举报
回复
期待高手解答
wangzhe1945
2009-04-18
打赏
举报
回复
[Quote=引用 5 楼 wuyi8808 的回复:]
扩展的斐波拿契数列。
[/Quote]
斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。
斐波那契数列
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
我们不妨拿新出生的一对小兔子分析一下:
第一个月小兔子没有繁殖能力,所以还是一对;
两个月后,生下一对小兔民数共有两对;
三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;
------
依次类推可以列出下表:
经过月数:---0---1---2---3---4---5---6---7---8---9--10--11--12
兔子对数:---1---1---2---3---5---8--13--21--34--55--89-144-233
表中数字1,1,2,3,5,8---构成了一个数列。这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项。
这个特点的证明:每月的大兔子数为上月的兔子数,每月的小兔子数为上月的大兔子数,即上上月的兔子数,相加。
这个数列是意大利中世纪数学家斐波那契在<算盘全书>中提出的,这个级数的通项公式,除了具有a(n+2)=an+a(n+1)/的性质外,还可以证明通项公式为:an=1/√[(1+√5/2) n-(1-√5/2) n](n=1,2,3.....)
上面这个题目跟这个差不多。
Harvey_He
2009-04-17
打赏
举报
回复
zh520
2009-04-17
打赏
举报
回复
这个问题网上一直没个结果,期望高手解答
辰爸
2009-04-17
打赏
举报
回复
[Quote=引用 4 楼 tianshikuqi8 的回复:]
int m = 0;
int x=n/4; /n为规定的年数,此题n为20
for(int i=1;i <=x;i++)
{
for (int j = 1; j <= i;j++ )
{
m++;
}
Console.Write('\n');
}
Console.Write(m); /m为所产奶牛的数量!!
Consol…
[/Quote]
错了,没有看清题目!~
ViewStates
2009-04-17
打赏
举报
回复
牛死么?
牛B死么!
vrhero
2009-04-17
打赏
举报
回复
很久以前就讨论过...自己搜索一下...
但是这个题目描述很有问题...你必须声明生下的都是母牛而且不考虑没有公牛也能生育...否则无答案...
human_2
2009-04-17
打赏
举报
回复
呵呵,最笨的方法算出来跟上面的公式不一样哦345
wangzhe1945
2009-04-17
打赏
举报
回复
我的数学学得不好, 但擅长模拟:
using System;
using System.Collections.Generic;
using System.Text;
namespace Cow
{
class Program
{
static void Main(string[] args)
{
List<Cow> list = new List<Cow>();
list.Add(new Cow()); //第一年只有一只牛
Farm farm = new Farm(list);
farm.BreedXYear(20); //20年的养殖
int count = farm.CowCount;
Console.WriteLine(count.ToString());
Console.ReadLine();
}
}
public class Cow
{
/// <summary>
/// 年龄
/// </summary>
protected int m_age;
public Cow()
{
m_age=0;
}
/// <summary>
/// 生长
/// </summary>
public void Growth(out Cow smallcow)
{
m_age++;
smallcow = BirthCow();
}
public int Age
{
get
{
return m_age;
}
}
/// <summary>
/// 生小牛
/// </summary>
/// <returns></returns>
protected Cow BirthCow()
{
if (m_age > 3)
{
Cow cow = new Cow();
return cow;
}
else
{
return null;
}
}
}
//农场
public class Farm
{
private List<Cow> m_cowList;
public Farm(List<Cow> cowList)
{
this.m_cowList = cowList;
}
/// <summary>
/// 一年农场的养殖
/// </summary>
public void BreedOneYear()
{
List<Cow> smallCowList=new List<Cow>();
foreach (Cow item in m_cowList)
{
Cow smallcow;
item.Growth(out smallcow);
if (smallcow != null)
{
smallCowList.Add(smallcow); //小牛加入小牛队伍
}
}
m_cowList.AddRange(smallCowList); //将小牛队伍加入大家庭队伍
}
public void BreedXYear(int Xyears)
{
for (int i = 0; i < Xyears; i++)
{
BreedOneYear();
}
}
/// <summary>
/// 返回牛的总数目
/// </summary>
/// <returns></returns>
public int CowCount
{
get
{
return m_cowList.Count;
}
}
}
}
结果如下: 345
tabbycat
2009-04-17
打赏
举报
回复
1头吧,也有可能0头,还有可能是N头
因为1头奶牛是生不出奶牛的,所有是1头
如果连这头也死了,那就是0头
如果使用克隆技术的话,那是N头
wuyi8808
2009-04-17
打赏
举报
回复
扩展的斐波拿契数列。
辰爸
2009-04-17
打赏
举报
回复
int m = 0;
int x=n/4; /n为规定的年数,此题n为20
for(int i=1;i<=x;i++)
{
for (int j = 1; j <= i;j++ )
{
m++;
}
Console.Write('\n');
}
Console.Write(m); /m为所产奶牛的数量!!
Console.ReadLine();
sharp_future
2009-04-17
打赏
举报
回复
比较麻烦啊
刚出生的奶牛,那就要4年后,你有2头奶牛了,从剩下的16年开始算吧
英雄在线
2009-04-17
打赏
举报
回复
0.5*(n-3)*(n-3)-0.5*n
英雄在线
2009-04-17
打赏
举报
回复
这个很简单
开始有1头
n年后有0.5*(n-1)*(n-1)-0.5
你核对下
用微积分
hyfei0315
2009-04-17
打赏
举报
回复
母牛生的都是公牛
maplevssnow
2009-04-17
打赏
举报
回复
这个问题本身就存在着提出问题的惯性错误``就是说具体的东西没说明白 如果照你这样说折不考虑别的因素???人的想象是无限的`
奶牛
问题
3:
奶牛
派对
【
问题
描述】
奶牛
在熊大妈的带领下排成了一条直队。 显然,不同的
奶牛
身高不一定相同…… 现在,
奶牛
们想知道,如果找出一些连续的
奶牛
,要求最左边的
奶牛
A是最矮的,最右边的B是最高的,且B高于A
奶牛
,中间如果存在
奶牛
,则身高不能和A、B
奶牛
相同。问这样的
奶牛
最多会有多少头? 从左到右给出
奶牛
的身高,请告诉它们符合条件的最多的
奶牛
数(答案可能是0,2,但不会是1)。 【输入】
奶牛
问题
(patheads)
奶牛
问题
(patheads)
问题
描述 今天是 Lv博士Lv博士Lv博士 的生日,并且现在是聚会的游戏时间。 Lv博士Lv博士Lv博士 让编号为 1∼N1 \sim N1∼N 的 NNN 头
奶牛
围成一个圈坐(所以除了最后一头牛,第 $ i $ 头
奶牛
与第 $ i - 1 $ 和 $ i + 1 $ 头
奶牛
相邻,第 NNN 头
奶牛
和第 N−1N - 1N−1 头与第 111 头
奶牛
相邻)。同时,Lv叔叔Lv叔叔Lv叔叔 拿了个桶,在桶里装了十亿张小纸条,每张小纸条上写有某个范围在 [1,106][1,10^
USACO铜 2023 12月
奶牛
得病
问题
最初,有一些
奶牛
被感染。每到夜晚,被感染的
奶牛
会将疾病传播给它左右两边的
奶牛
(如果这些
奶牛
存在的话)。唯一可能导致这个最终状态的初始状态和夜晚数是:没有经过任何夜晚,输入中的四头感染的
奶牛
都是从最开始就感染了这种疾病。由于minday的缘故,每一头初始的
奶牛
都有一定的感染范围(当minday为2时,范围为5(包括初。始牛))我们要让这个范围尽量的不重叠,但难免有一些小尾巴,(minday为2,有6头牛要感染。我们为了将
奶牛
的数量压榨到最小,单块1的天数越多越好(可怜的
奶牛
)得:day=y-1。
求
奶牛
总数
问题
问题
描述: 一只刚出生的
奶牛
,4年生1只
奶牛
,以后每一年生1只
奶牛
。 现有一只刚出生的
奶牛
,求n年后有多少
奶牛
? 分析: 第一年是一只到第四年开始增加1,以后这只
奶牛
奶牛
开始每年新生一只
奶牛
,到第二个4年时,第一个4年生的
奶牛
开始生新
奶牛
,以后每年都生一只,其他的新生的羊也是如此。因此我们可以用递归的方求解此
问题
。 具体代码如下: #include<stdio.h> /* 一只刚出生...
奶牛
问题
在博客园上看到一位园友在讨论
奶牛
问题
的算法,地址:http://www.cnblogs.com/jiny-z/archive/2007/08/07/846019.html
奶牛
问题
:一只刚出生的小牛,4年后生一只小牛,以后每年生一只。现有一只刚出生的小牛,问20年后共有牛多少只? 这位园友是用递归实现的,我却想到实际上可以通过创建
奶牛
对象,赋给它们生小牛的方法,然后让它们自己去“生”...
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章