`
Jiagoo
  • 浏览: 3228 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

四个女人过河

Go 
阅读更多
四个女人过桥,夜间有一火把,每次最多过两个,必需带火把,
过桥速度不一样
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);
	}
}


分享到:
评论

相关推荐

    新北师大三年级上册数学过河PPT课件.pptx

    在第4页和第5页中,课件展示了两个与团队活动相关的实例,分别涉及到将男生和女生合在一起后,按照每组人数平均分配所需船只的数量。通过这样的问题,学生学习了如何处理包含加法、减法和除法的复合运算,并理解了先...

    数学二年级下册过河PPT学习教案.pptx

    在第一页中,情境设定为男生29人,女生25人需要乘坐限载9人的船只过河,从而引出了“至少需要几条船”的问题。这是一个基础的除法应用题,需要将总人数(54人)除以每条船的最大载客量(9人)来计算所需船只的数量...

    逻辑题智力

    关键在于安排农夫、狗、男人、女人以及孩子们的过河顺序,同时保证狗不离开农夫,男孩不离开男人,女孩不离开女人。由于小船只能载两人,需要多次往返,具体解法略为复杂,类似第1题的策略,但需要考虑到更多人物...

    五四制四年级数学上册期末试卷.pdf

    根据给出的男女生1分钟仰卧起坐成绩,需要进行数据统计和分析,例如计算平均分、中位数、众数等。 以上内容涵盖了四年级上学期数学期末考试中的核心知识点,包括代数、几何、运算规则、单位换算、比较大小、判断正...

    精美三七女生节活动策划PPT模板

    四、女生节小游戏 1、还你在心口难开 [ 游戏道具 ] 写有词语的卡片,贴在额头上,别人能看见,自己看不见。 [ 游戏规则 ] (1)、分2队进行PK,每队3人参赛;所有人均不能向参加游 戏的其他人明确讲出他人卡片的内容...

    最新三年级上册数学专项练习题应用题解答问题(含答案)(11).doc

    所以,四个年级总共植树337+248+506=1091棵。 9. 第9题考察数据解读。星期二和星期三里程表读数相同,意味着星期三没有行驶。星期四行驶了90-649=251千米。星期五行驶最多,为90千米。 10. 第10题涉及比例计算。...

    最新三年级上册数学应用题解答问题练习题(8).doc

    2. 星期四行驶距离为773-649=124千米。 3. 通过对比五天的里程数,星期五行驶最多,为890-773=117千米。 4. 小茜的计算错误,被减数应为52-(7-2)=47,减数应为8-(5-5)=8,正确差为592-47-8=537。 5. 小马虎的错误...

    最新三年级上册数学应用题解答问题练习题(含答案)(8).doc

    24. 李爷爷农场的栅栏长度问题,需要计算四个饲养区加上水塘四周的总周长。 25. 正方形分割成长方形的问题,通过长方形的周长计算正方形的周长。 26. 布料长度问题,利用最后剩下的长度反推原布料的长度。 27. ...

    趣味运动会项目大全.docx

    5. **摸石过河**:单人项目,运动员需用两块砖头交替前进,途中脚落地则取消资格。用时最少者为胜。 6. **赶小猪**:女生参与,用羽毛球拍赶篮球前进,途中拍子不能离开球,用时最少者获胜。 7. **托球跑**:不限...

    三年级上册数学应用题解答问题专题练习50.doc

    22. 拼接图形周长:四个长方形拼成正方形,利用正方形周长反推长方形周长。 23. 速度和时间的计算:梨和桃相遇的问题,根据速度和时间计算距离,理解速度、时间和距离的关系。 以上是对题目中涉及的数学知识点的...

    趣味运动会项目大全.doc

    4. **蹲跳接力**:八人一组(四男四女),背对背挽手蹲跳,最后返回起点的组别用时最少者获胜。 5. **摸石过河**:运动员用两块砖头交替前行,脚不能落地,最快到达终点的获胜。 6. **赶小猪**:女生用羽毛球拍赶...

    最新三年级上册数学专项练习题应用题解答问题(3).doc

    设男生人数为x,则女生人数为4x+2,总人数为42,解这个方程可以找出男女生的具体人数。 3. 几何距离问题:第三题涉及的是两点间距离的计算,需要理解两个点可能的位置关系,考虑它们之间可能是直线距离或者重叠部分...

    农协团队游戏PPT学习教案.pptx

    1. **五毛一块**:这个游戏强调快速反应和协作,男生代表五毛,女生代表一块。当主持人宣布一个金额时,参与者需要迅速组成相应的数值。这个游戏旨在训练团队成员之间的配合和灵活性。 2. **猜宝游戏**:这个游戏...

    最新三年级上册数学应用题解答问题练习题 (2).doc

    10. 通过比例关系,1个梨+1个苹果=5个桃,2个苹果=4个桃,得到1个梨=3个桃。 11. 把被减数8看成6,减数6看成9,差是290,正确的差应该是(290 - (9 - 6)) + 8 = 295。 12. 等差数列问题,小冬现在12岁,五年前是7岁...

    西师大版小升初典型问题分类:代换问题.docx

    16. **分配问题**:"9 个男生和16 个女生坐在一起吃饭,现存桌子上有 8 个碗,每人 1 个,还差几个碗?",需要考虑人数与碗的数量关系。 17. **差值问题**:"乙原来比丙多多少本?",在乙给丙5本书后两人书的本数...

    最新三年级上册数学应用题解答问题精选附答案(6).doc

    星期四行驶的距离是773-649=124千米;通过比较每天的里程变化,可找出开车行驶最多的一天。 2. 距离计算:题目要求理解并运用加减法来解决实际问题。小明家和小红家之间的路程可能为2500米+500米或2500米-500米,即...

    最新三年级上册数学试卷练习题应用题解答问题(附答案)(6).doc

    2. 第三题是关于长度的组合问题,通过总长度和两个部分长度的关系,求出重叠部分的长度。 3. 第四题与第一题类似,同样是计算两家之间的距离。 4. 笑笑一家的行程问题是位置和距离的结合,需要理解行程路线图并...

    无锡市三年级上册数学应用题解答问题训练经典题目(4).doc

    11. 植树总数的计算:通过四年级、三年级植树的数量,加上或减去一定数量,得出其他年级的植树数,运用加减法和理解问题的能力。 12. 长度的组合:两根竹板钉在一起的问题,通过总长度减去未钉在一起的长度,求得钉...

    昆明市三年级上册数学应用题解答问题精选及答案(1).doc

    19. 男女比例的问题,设男生有x人,女生有4x人,x+4x=40,解得x=8人,男生8人,女生32人。 20. 商场购物的问题,(1)书包价格是墨水的几倍,具体数值未知;(2)通过找零可以得出总花费为550-14=536元,可能是书包288...

Global site tag (gtag.js) - Google Analytics