用C++语言 不要C的哦~~ 细菌繁殖问题

璿1234567 2013-10-26 08:46:02
编程求解问题:有一种细菌,从其产生的第4分钟后,每分钟都产生一个同种细菌。若某初始时刻仅有一个这种细菌,那么此后第n分钟时共有多少种这种细菌?
提示:初始时刻(第t=0分钟),a(0)=1,b(0)=c(0)=d(0)=0,细菌总数为s(0)=a(0)+b(0)+c(0)+d(0)=1。下一时刻d(t+1)=c(t)+d(t),c(t)=b(t),b(t)=a(t),a(t)=d(t)。

拜托了~~
...全文
1432 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyzinfernity 2013-10-27
  • 打赏
  • 举报
回复
虽然我也发现牛角尖了,不过就题论题的话应该是下面这样吧
a,b,c,d分别代表产生分钟数为1,2,3,4的细菌,1分钟后,4+的还是4+,3的变成了4+,2的变成了3,1的变成了2,4+的又产生同等数量的1,所以就是d(n+1)=d(n)+c(n),c(n+1)=b(n),b(n+1)=a(n),a(n+1)=d(n).至于为什么没有0,我在这里纠结了很久,既然提示是那样就按那样去算吧.
另外不知道为什么要强调用C++而不是C,那我发段C++代码吧.
#include <iostream>
using namespace std;

class Bacteria
{
private:
//a,b,c,d依次代表产生时间为1,2,3,4+分钟的细菌
int a,b,c,d;
public:
//经过time分钟时间后a,b,c,d的改变
void Change(int time)
{
a = 1;
b = c = d = 0;
for (int i = 0; i < time; i++)
{
int temp = d;
d = d + c;
c = b;
b = a;
a = temp;
}
}
//获得细菌数
int GetNum(){return (a + b + c + d);}
//测试20分钟内细菌数的变化
void main()
{
for (int i=0; i < 20; i++)
{
Change(i);
cout << "time: " << i << "min num: "
<< GetNum() << endl;
}
}
};

int main()
{
Bacteria bac;
bac.main();
return 0;
}

结果
wsgsf 2013-10-27
  • 打赏
  • 举报
回复
引用 5 楼 xyzinfernity 的回复:
虽然我也发现牛角尖了,不过就题论题的话应该是下面这样吧 a,b,c,d分别代表产生分钟数为1,2,3,4的细菌,1分钟后,4+的还是4+,3的变成了4+,2的变成了3,1的变成了2,4+的又产生同等数量的1,所以就是d(n+1)=d(n)+c(n),c(n+1)=b(n),b(n+1)=a(n),a(n+1)=d(n).至于为什么没有0,我在这里纠结了很久,既然提示是那样就按那样去算吧. 另外不知道为什么要强调用C++而不是C,那我发段C++代码吧.
#include <iostream>
using namespace std;

class Bacteria
{
private:
	//a,b,c,d依次代表产生时间为1,2,3,4+分钟的细菌
	int a,b,c,d;
public:
	//经过time分钟时间后a,b,c,d的改变
	void Change(int time)
	{
		a = 1;
		b = c = d = 0;
		for (int i = 0; i < time; i++)
		{
			int temp = d;
			d = d + c;
			c = b;
			b = a;
			a = temp;
		}
	}
	//获得细菌数
	int GetNum(){return (a + b + c + d);}  
	//测试20分钟内细菌数的变化
	void main()
	{
		for (int i=0; i < 20; i++)
		{
			Change(i);
			cout << "time: " << i << "min  num: "
				<< GetNum() << endl;
		}
	}
};

int main()
{
	Bacteria bac;
	bac.main();
	return 0;
}
结果
你这里那个void main和int main()函数不冲突么??还有那个int main里哪个语句看不懂啊可以解释一下么??谢谢
xyzinfernity 2013-10-27
  • 打赏
  • 举报
回复
引用 6 楼 wsgsf 的回复:
[quote=引用 5 楼 xyzinfernity 的回复:] 虽然我也发现牛角尖了,不过就题论题的话应该是下面这样吧 a,b,c,d分别代表产生分钟数为1,2,3,4的细菌,1分钟后,4+的还是4+,3的变成了4+,2的变成了3,1的变成了2,4+的又产生同等数量的1,所以就是d(n+1)=d(n)+c(n),c(n+1)=b(n),b(n+1)=a(n),a(n+1)=d(n).至于为什么没有0,我在这里纠结了很久,既然提示是那样就按那样去算吧. 另外不知道为什么要强调用C++而不是C,那我发段C++代码吧.
#include <iostream>
using namespace std;

class Bacteria
{
private:
	//a,b,c,d依次代表产生时间为1,2,3,4+分钟的细菌
	int a,b,c,d;
public:
	//经过time分钟时间后a,b,c,d的改变
	void Change(int time)
	{
		a = 1;
		b = c = d = 0;
		for (int i = 0; i < time; i++)
		{
			int temp = d;
			d = d + c;
			c = b;
			b = a;
			a = temp;
		}
	}
	//获得细菌数
	int GetNum(){return (a + b + c + d);}  
	//测试20分钟内细菌数的变化
	void main()
	{
		for (int i=0; i < 20; i++)
		{
			Change(i);
			cout << "time: " << i << "min  num: "
				<< GetNum() << endl;
		}
	}
};

int main()
{
	Bacteria bac;
	bac.main();
	return 0;
}
结果
你这里那个void main和int main()函数不冲突么??还有那个int main里哪个语句看不懂啊可以解释一下么??谢谢[/quote] int main()是全局函数,我调用的是类的成员函数,不管名字是什么肯定不会冲突啊。 main函数里除了return 0就两句话吧,定义Bacteria类的对象Bac,然后调用Bac的main方法。 感觉你对C++几乎不了解啊,只学过C然后老师要你用C++么?
  • 打赏
  • 举报
回复
引用 6 楼 wsgsf 的回复:
[quote=引用 5 楼 xyzinfernity 的回复:] 虽然我也发现牛角尖了,不过就题论题的话应该是下面这样吧 a,b,c,d分别代表产生分钟数为1,2,3,4的细菌,1分钟后,4+的还是4+,3的变成了4+,2的变成了3,1的变成了2,4+的又产生同等数量的1,所以就是d(n+1)=d(n)+c(n),c(n+1)=b(n),b(n+1)=a(n),a(n+1)=d(n).至于为什么没有0,我在这里纠结了很久,既然提示是那样就按那样去算吧. 另外不知道为什么要强调用C++而不是C,那我发段C++代码吧.
#include <iostream>
using namespace std;

class Bacteria
{
private:
	//a,b,c,d依次代表产生时间为1,2,3,4+分钟的细菌
	int a,b,c,d;
public:
	//经过time分钟时间后a,b,c,d的改变
	void Change(int time)
	{
		a = 1;
		b = c = d = 0;
		for (int i = 0; i < time; i++)
		{
			int temp = d;
			d = d + c;
			c = b;
			b = a;
			a = temp;
		}
	}
	//获得细菌数
	int GetNum(){return (a + b + c + d);}  
	//测试20分钟内细菌数的变化
	void main()
	{
		for (int i=0; i < 20; i++)
		{
			Change(i);
			cout << "time: " << i << "min  num: "
				<< GetNum() << endl;
		}
	}
};

int main()
{
	Bacteria bac;
	bac.main();
	return 0;
}
结果
你这里那个void main和int main()函数不冲突么??还有那个int main里哪个语句看不懂啊可以解释一下么??谢谢[/quote] 不会冲突的呀,一个是类中的成员函数,一个是全局函数,怎么会冲突呀,作用域都不一样呀,嗯啊!
zhaokai115 2013-10-26
  • 打赏
  • 举报
回复
引用 2 楼 wangdahu888 的回复:
第n分钟时共有多少种这种细菌? 看错了,这是脑筋急转弯呀,始终是一种细菌,除非变异了.....
需求分析很到位!
凌典 2013-10-26
  • 打赏
  • 举报
回复
引用 2 楼 wangdahu888 的回复:
第n分钟时共有多少种这种细菌? 看错了,这是脑筋急转弯呀,始终是一种细菌,除非变异了.....
程序员看待问题总是喜欢绕弯
  • 打赏
  • 举报
回复
第n分钟时共有多少种这种细菌? 看错了,这是脑筋急转弯呀,始终是一种细菌,除非变异了.....
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
int GetGermNum(int n){
   if(n<=4)
	   return 0;
   int temp=n-4;
   int num=0;
   while(temp>0){
	   temp--;//时间消逝一分钟
	   num++;//产生一个细菌
	   num+=GetGermNum(temp); //这个细菌在余生里,继续产生细菌
   }
   return num;
}

int _tmain(int argc, _TCHAR* argv[])
{
	cout<<GetGermNum(20)<<endl;
	return 0;
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧