初始有一个刚出生的细菌,新细菌20分钟后可进行繁殖,每30分钟繁殖两个(注:新繁殖出来的细菌也可以繁殖,20分钟生第一代,50分钟生第二代),但是每个细菌最多可以繁殖3代,细菌150分钟后自然死亡,请用面向对象思想设计实现计算n分钟内细菌总数
@Test
public void test1() {
Integer limitTime = 80;
Integer nowTime = 1;
List<Cell> cellList = new ArrayList<>();
Cell cell = new Cell(0);
cellList.add(cell);
for(int i=0;i<limitTime;i++){
List<Integer> num = new ArrayList<>();
for(int j = 0;j<cellList.size();j++){
if(cellList.get(j).getDieTime()==nowTime){
num.add(j);
}
}
for(int j = 0;j<num.size();j++){
cellList.remove(num.get(j));
}
for(int j = 0;j<cellList.size();j++){
if(nowTime-cellList.get(j).getBirthTime()==20){
Cell cell1 = new Cell(nowTime);
cellList.add(cell1);
}else if((nowTime-cellList.get(j).getBirthTime()-20)%30==0){
Cell cell1 = new Cell(nowTime);
cellList.add(cell1);
}
}
nowTime = nowTime + 1;
}
System.out.println(cellList.size());
}
public class Cell {
private Integer birthTime;
private Integer dieTime;
Cell(Integer nowTime) {
this.birthTime = nowTime;
this.dieTime = nowTime + 150;
}
}
细菌类:出生的时间,死亡时间;构造方法直接设置死亡时间为出生时间后的150分钟
从i=0开始循环直到输入的时间,每次循环都先剔除已经到死亡时间的细菌,再循环判断细菌是否已经到增殖时间
思路:
1.设计一个细菌类,
2.细菌类记录:自已出生的时间,存活时间
3.细菌类里加一个定时器/或线程,定时器定时的累加细菌的存活时间,存活时间到达20分钟时New出两个新的细菌,然后每30分钟再New现两个细菌,150分钟后Dead
4.加一个全局的list或map做为细菌库,新New出来的细菌加入到细菌库中,死亡的细菌移出细菌库。
5.统计细菌库就可以知道当前的细菌总数
希望对你有所帮助,麻烦关注下我的博客。我会持续发技术文章。觉得可以的话欢迎点赞
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632