我是靠谱客的博主 糟糕蛋挞,最近开发中收集的这篇文章主要介绍java版4人过桥问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

夜晚,桥头有 4个人在一起准备过桥,这些人中只有一个人有手电筒,从桥头走到桥尾一次最多只能俩个人同时行进,每个人单独过桥的时间可能不一样,如果两个人在一起走,则这次的花费时间是走的最慢的那个人,假如现在四个人单独过桥的时间分别是 1,2,5,7,将它们放在一个数组中{1,2,5,7}算出最少的过桥时间。

问题解析:这个问题可以用递归解决。定义俩个指针,i和j,这俩个指针只能向前遍历。i从数组的第i位开始挑出一个人,j是在数组挑出第i位之后再从数组中挑出的人,这样就遍历了数组内各种情况的组合。在从四个人中随便抽出俩个过桥,此时从桥尾选出一个耗时最少的人重新回到桥头,这时候就成了3人过桥的问题,3人过桥又是找出各种组合过桥,最终就剩下俩个人在桥头,这时候俩个人就直接过桥,不用再进行组合过桥。可见俩个人过桥就是递归的出口。

以下是代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

public class FourMenPassBridge {
	public static void main(String[] args) {
		int[] source = {1,2,5,7};
		FourMenPassBridge pass = new FourMenPassBridge();
		pass.setSrc(source);
		pass.passBridge(pass.getSrc(), pass.getDes(), 0);
		int min = pass.result.get(0);
		for(int i = 0;i
   
   
    
     result = new ArrayList
    
    
     
     ();
	public static int count=0;
	public FourMenPassBridge(){
		des = new Vector();
		src = new Vector();
	}
	public void setSrc(int[] array){
		for(int i = 0;i
     
     
      
      =3){
			for(int i = 0;i
      
      
     
     
    
    
   
   

以下是运行结果:先列举出各种情况,最后判断出最少的时间
入口:src-[1, 2, 5, 7]des-[]
i=0-1,j=1-2
先这俩个人过去:1和2
这时从桥尾回来的是:1
[5, 7, 1]des+[2]
入口:src-[5, 7, 1]des-[2]
i=0-5,j=1-7
先这俩个人过去:5和7
这时从桥尾回来的是:2
[1, 2]des+[5, 7]
入口:src-[1, 2]des-[5, 7]
最后俩个人过去的是:1和2
第1种情况=======================总共花的时间是:14
i=0-5,j=2-1
先这俩个人过去:5和1
这时从桥尾回来的是:1
[7, 1]des+[2, 5]
入口:src-[7, 1]des-[2, 5]
最后俩个人过去的是:7和1
第2种情况=======================总共花的时间是:16
i=1-7,j=2-1
先这俩个人过去:7和1
这时从桥尾回来的是:1
[5, 1]des+[2, 7]
入口:src-[5, 1]des-[2, 7]
最后俩个人过去的是:5和1
第3种情况=======================总共花的时间是:16
i=0-1,j=2-5
先这俩个人过去:1和5
这时从桥尾回来的是:1
[2, 7, 1]des+[5]
入口:src-[2, 7, 1]des-[5]
i=0-2,j=1-7
先这俩个人过去:2和7
这时从桥尾回来的是:2
[1, 2]des+[5, 7]
入口:src-[1, 2]des-[5, 7]
最后俩个人过去的是:1和2
第4种情况=======================总共花的时间是:17
i=0-2,j=2-1
先这俩个人过去:2和1
这时从桥尾回来的是:1
[7, 1]des+[5, 2]
入口:src-[7, 1]des-[5, 2]
最后俩个人过去的是:7和1
第5种情况=======================总共花的时间是:16
i=1-7,j=2-1
先这俩个人过去:7和1
这时从桥尾回来的是:1
[2, 1]des+[5, 7]
入口:src-[2, 1]des-[5, 7]
最后俩个人过去的是:2和1
第6种情况=======================总共花的时间是:16
i=0-1,j=3-7
先这俩个人过去:1和7
这时从桥尾回来的是:1
[2, 5, 1]des+[7]
入口:src-[2, 5, 1]des-[7]
i=0-2,j=1-5
先这俩个人过去:2和5
这时从桥尾回来的是:2
[1, 2]des+[7, 5]
入口:src-[1, 2]des-[7, 5]
最后俩个人过去的是:1和2
第7种情况=======================总共花的时间是:17
i=0-2,j=2-1
先这俩个人过去:2和1
这时从桥尾回来的是:1
[5, 1]des+[7, 2]
入口:src-[5, 1]des-[7, 2]
最后俩个人过去的是:5和1
第8种情况=======================总共花的时间是:16
i=1-5,j=2-1
先这俩个人过去:5和1
这时从桥尾回来的是:1
[2, 1]des+[7, 5]
入口:src-[2, 1]des-[7, 5]
最后俩个人过去的是:2和1
第9种情况=======================总共花的时间是:16
i=1-2,j=2-5
先这俩个人过去:2和5
这时从桥尾回来的是:2
[1, 7, 2]des+[5]
入口:src-[1, 7, 2]des-[5]
i=0-1,j=1-7
先这俩个人过去:1和7
这时从桥尾回来的是:1
[2, 1]des+[5, 7]
入口:src-[2, 1]des-[5, 7]
最后俩个人过去的是:2和1
第10种情况=======================总共花的时间是:17
i=0-1,j=2-2
先这俩个人过去:1和2
这时从桥尾回来的是:1
[7, 1]des+[5, 2]
入口:src-[7, 1]des-[5, 2]
最后俩个人过去的是:7和1
第11种情况=======================总共花的时间是:17
i=1-7,j=2-2
先这俩个人过去:7和2
这时从桥尾回来的是:2
[1, 2]des+[5, 7]
入口:src-[1, 2]des-[5, 7]
最后俩个人过去的是:1和2
第12种情况=======================总共花的时间是:18
i=1-2,j=3-7
先这俩个人过去:2和7
这时从桥尾回来的是:2
[1, 5, 2]des+[7]
入口:src-[1, 5, 2]des-[7]
i=0-1,j=1-5
先这俩个人过去:1和5
这时从桥尾回来的是:1
[2, 1]des+[7, 5]
入口:src-[2, 1]des-[7, 5]
最后俩个人过去的是:2和1
第13种情况=======================总共花的时间是:17
i=0-1,j=2-2
先这俩个人过去:1和2
这时从桥尾回来的是:1
[5, 1]des+[7, 2]
入口:src-[5, 1]des-[7, 2]
最后俩个人过去的是:5和1
第14种情况=======================总共花的时间是:17
i=1-5,j=2-2
先这俩个人过去:5和2
这时从桥尾回来的是:2
[1, 2]des+[7, 5]
入口:src-[1, 2]des-[7, 5]
最后俩个人过去的是:1和2
第15种情况=======================总共花的时间是:18
i=2-5,j=3-7
先这俩个人过去:5和7
这时从桥尾回来的是:5
[1, 2, 5]des+[7]
入口:src-[1, 2, 5]des-[7]
i=0-1,j=1-2
先这俩个人过去:1和2
这时从桥尾回来的是:1
[5, 1]des+[7, 2]
入口:src-[5, 1]des-[7, 2]
最后俩个人过去的是:5和1
第16种情况=======================总共花的时间是:20
i=0-1,j=2-5
先这俩个人过去:1和5
这时从桥尾回来的是:1
[2, 1]des+[7, 5]
入口:src-[2, 1]des-[7, 5]
最后俩个人过去的是:2和1
第17种情况=======================总共花的时间是:20
i=1-2,j=2-5
先这俩个人过去:2和5
这时从桥尾回来的是:2
[1, 2]des+[7, 5]
入口:src-[1, 2]des-[7, 5]
最后俩个人过去的是:1和2
第18种情况=======================总共花的时间是:21
-------14

最后

以上就是糟糕蛋挞为你收集整理的java版4人过桥问题的全部内容,希望文章能够帮你解决java版4人过桥问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部