四个女人过桥,夜间有一火把,每次最多过两个,必需带火把,
过桥速度不一样
no.1 1min
no.2 2min
no.3 5min
no.4 10min
两个人过用最慢一个的速度,火把不能扔
如何在17min内四个女人都过桥
import java.util.ArrayList;
import java.util.List;
public class GoRriver {
List<Woman> leftWomanList = null;
List<Woman> rightWomanList = null;
int times = 0;
boolean hb = true;// 表示火把在左边
final int size = 4;
public GoRriver() {
leftWomanList = new ArrayList<Woman>(size);
rightWomanList = new ArrayList<Woman>(size);
leftWomanList.add(new Woman(1, 1));
leftWomanList.add(new Woman(2, 2));
leftWomanList.add(new Woman(3, 5));
leftWomanList.add(new Woman(4, 10));
}
void go() {
while (leftWomanList.size() > 0) {
if (rightWomanList.size() == 0) {
goMinRight();
} else {
if (hb) {// 火把在左边
Woman leftMinWoman = getMinWoman(leftWomanList);
Woman rightMinWoman = getMinWoman(rightWomanList);
if (leftMinWoman.getTime() < rightMinWoman.getTime()) {// 如果左岸过桥时间最短的比右岸过桥时间最短的还短,则派两个时间最长的妇女过岸
goMaxRight();
} else {
goMinRight();
}
} else {// 火把在右边
backLeft();
}
}
}
}
private void backLeft() {
Woman minWoman = getMinWoman(rightWomanList);
System.out.println("派妇女:" + minWoman.getId() + "," + minWoman.getTime() + "送火把");
rightWomanList.remove(minWoman);
leftWomanList.add(minWoman);
times += minWoman.getTime();
hb = true;
System.out.println("================");
}
private void goMaxRight() {
Woman firstWoman = getMaxWoman(leftWomanList);
leftWomanList.remove(firstWoman);
System.out.println("派妇女:" + firstWoman.getId() + "," + firstWoman.getTime() + "去对岸");
Woman secondWoman = getMaxWoman(leftWomanList);
leftWomanList.remove(secondWoman);
System.out.println("派妇女:" + secondWoman.getId() + "," + secondWoman.getTime() + "去对岸");
rightWomanList.add(firstWoman);
rightWomanList.add(secondWoman);
times += firstWoman.getTime();
hb = false;
}
private void goMinRight() {
Woman firstWoman = getMinWoman(leftWomanList);
leftWomanList.remove(firstWoman);
System.out.println("派妇女:" + firstWoman.getId() + "," + firstWoman.getTime() + "去对岸");
Woman secondWoman = getMinWoman(leftWomanList);
leftWomanList.remove(secondWoman);
System.out.println("派妇女:" + secondWoman.getId() + "," + secondWoman.getTime() + "去对岸");
rightWomanList.add(firstWoman);
rightWomanList.add(secondWoman);
times += secondWoman.getTime();
hb = false;
}
Woman getWoman(List<Woman> list, int id) {
for (Woman woman : list) {
if (woman.getId() == id) {
return woman;
}
}
return null;
}
Woman getMinWoman(List<Woman> list) {
Woman minWoman = list.get(0);
for (Woman woman : list) {
if (woman.getTime() < minWoman.getTime()) {
minWoman = woman;
}
}
return minWoman;
}
Woman getMaxWoman(List<Woman> list) {
Woman maxWoman = list.get(0);
for (Woman woman : list) {
if (woman.getTime() > maxWoman.getTime()) {
maxWoman = woman;
}
}
return maxWoman;
}
public static void main(String[] args) {
GoRriver goRevier = new GoRriver();
goRevier.go();
System.out.println("=================");
System.out.println("总共花费:"+goRevier.times);
}
}
分享到:
相关推荐
在第4页和第5页中,课件展示了两个与团队活动相关的实例,分别涉及到将男生和女生合在一起后,按照每组人数平均分配所需船只的数量。通过这样的问题,学生学习了如何处理包含加法、减法和除法的复合运算,并理解了先...
在第一页中,情境设定为男生29人,女生25人需要乘坐限载9人的船只过河,从而引出了“至少需要几条船”的问题。这是一个基础的除法应用题,需要将总人数(54人)除以每条船的最大载客量(9人)来计算所需船只的数量...
关键在于安排农夫、狗、男人、女人以及孩子们的过河顺序,同时保证狗不离开农夫,男孩不离开男人,女孩不离开女人。由于小船只能载两人,需要多次往返,具体解法略为复杂,类似第1题的策略,但需要考虑到更多人物...
根据给出的男女生1分钟仰卧起坐成绩,需要进行数据统计和分析,例如计算平均分、中位数、众数等。 以上内容涵盖了四年级上学期数学期末考试中的核心知识点,包括代数、几何、运算规则、单位换算、比较大小、判断正...
四、女生节小游戏 1、还你在心口难开 [ 游戏道具 ] 写有词语的卡片,贴在额头上,别人能看见,自己看不见。 [ 游戏规则 ] (1)、分2队进行PK,每队3人参赛;所有人均不能向参加游 戏的其他人明确讲出他人卡片的内容...
所以,四个年级总共植树337+248+506=1091棵。 9. 第9题考察数据解读。星期二和星期三里程表读数相同,意味着星期三没有行驶。星期四行驶了90-649=251千米。星期五行驶最多,为90千米。 10. 第10题涉及比例计算。...
2. 星期四行驶距离为773-649=124千米。 3. 通过对比五天的里程数,星期五行驶最多,为890-773=117千米。 4. 小茜的计算错误,被减数应为52-(7-2)=47,减数应为8-(5-5)=8,正确差为592-47-8=537。 5. 小马虎的错误...
24. 李爷爷农场的栅栏长度问题,需要计算四个饲养区加上水塘四周的总周长。 25. 正方形分割成长方形的问题,通过长方形的周长计算正方形的周长。 26. 布料长度问题,利用最后剩下的长度反推原布料的长度。 27. ...
5. **摸石过河**:单人项目,运动员需用两块砖头交替前进,途中脚落地则取消资格。用时最少者为胜。 6. **赶小猪**:女生参与,用羽毛球拍赶篮球前进,途中拍子不能离开球,用时最少者获胜。 7. **托球跑**:不限...
22. 拼接图形周长:四个长方形拼成正方形,利用正方形周长反推长方形周长。 23. 速度和时间的计算:梨和桃相遇的问题,根据速度和时间计算距离,理解速度、时间和距离的关系。 以上是对题目中涉及的数学知识点的...
4. **蹲跳接力**:八人一组(四男四女),背对背挽手蹲跳,最后返回起点的组别用时最少者获胜。 5. **摸石过河**:运动员用两块砖头交替前行,脚不能落地,最快到达终点的获胜。 6. **赶小猪**:女生用羽毛球拍赶...
设男生人数为x,则女生人数为4x+2,总人数为42,解这个方程可以找出男女生的具体人数。 3. 几何距离问题:第三题涉及的是两点间距离的计算,需要理解两个点可能的位置关系,考虑它们之间可能是直线距离或者重叠部分...
1. **五毛一块**:这个游戏强调快速反应和协作,男生代表五毛,女生代表一块。当主持人宣布一个金额时,参与者需要迅速组成相应的数值。这个游戏旨在训练团队成员之间的配合和灵活性。 2. **猜宝游戏**:这个游戏...
10. 通过比例关系,1个梨+1个苹果=5个桃,2个苹果=4个桃,得到1个梨=3个桃。 11. 把被减数8看成6,减数6看成9,差是290,正确的差应该是(290 - (9 - 6)) + 8 = 295。 12. 等差数列问题,小冬现在12岁,五年前是7岁...
16. **分配问题**:"9 个男生和16 个女生坐在一起吃饭,现存桌子上有 8 个碗,每人 1 个,还差几个碗?",需要考虑人数与碗的数量关系。 17. **差值问题**:"乙原来比丙多多少本?",在乙给丙5本书后两人书的本数...
星期四行驶的距离是773-649=124千米;通过比较每天的里程变化,可找出开车行驶最多的一天。 2. 距离计算:题目要求理解并运用加减法来解决实际问题。小明家和小红家之间的路程可能为2500米+500米或2500米-500米,即...
2. 第三题是关于长度的组合问题,通过总长度和两个部分长度的关系,求出重叠部分的长度。 3. 第四题与第一题类似,同样是计算两家之间的距离。 4. 笑笑一家的行程问题是位置和距离的结合,需要理解行程路线图并...
11. 植树总数的计算:通过四年级、三年级植树的数量,加上或减去一定数量,得出其他年级的植树数,运用加减法和理解问题的能力。 12. 长度的组合:两根竹板钉在一起的问题,通过总长度减去未钉在一起的长度,求得钉...
19. 男女比例的问题,设男生有x人,女生有4x人,x+4x=40,解得x=8人,男生8人,女生32人。 20. 商场购物的问题,(1)书包价格是墨水的几倍,具体数值未知;(2)通过找零可以得出总花费为550-14=536元,可能是书包288...