java 小游戏 编程

QuickPai 2009-03-15 12:45:35
有一家人,晚上要过一个独木桥。但是他们只有一盏灯,而这盏灯只能使用30秒了。要在灯熄灭前过这座桥,他们一家五口人每个人过桥的速度不同。瘦人1秒,小胖3秒,姑娘6秒,大胖8秒,瘸子12秒。 每次只能过两个人。 过去后,对岸要有一个人再把灯送回来
试用java编写程序写出所有过桥的可能
这是这个游戏的网址
http://xiaoyou.qq.com/index.php?mod=blog&act=show&u=c265e4bd629300c5f57ac841390c463edd76699e4fc2b126&blogid=1236827830&su=c265e4bd629300c56d3ecce2bcd731d8586d8fcffa0d82af
...全文
127 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
QuickPai 2009-03-18
代码昨天晚上写好了(就题论题的,一位朋友帮助说了思路,然后我用java写的)
import java.util.*;
class Bridge3
{
public static void main(String[] args)
{
LinkedList left=new LinkedList();
LinkedList right=new LinkedList();
int time=0; //获取总时间
int[] array=new int[5];
Scanner input=new Scanner(System.in);
System.out.println("请输入5个数:");
for(int i=0;i<array.length;i++)
{
array[i]=input.nextInt();
left.add(array[i]);
}
Collections.sort(left); //对left的数进行从小到大排序
for(int i=0;i<array.length-2;i++) //循环所需次数array.length-2
{ if(i==0 || i==array.length-3)
{ time=time+Min2toRight(left,right);
}
else if(i==1)
{ time=time+Max2toRight(left,right);
}
time=time+Min1toLeft(left,right);
}
time=time+Last2toRight(left,right);
System.out.println("总用时为"+time+"秒");
}

static int Min2toRight(LinkedList L,LinkedList R)
{ int timeR; //获取到左边的时间
R.add(L.get(0));
R.add(L.get(1));
timeR=Integer.parseInt(L.get(1).toString());
Collections.sort(R);
L.remove(0);
L.remove(0);
Collections.sort(L);
printL(L);
System.out.print("-------->");
printR(R);
System.out.println("用时"+timeR+"秒");
return timeR;
}


static int Min1toLeft(LinkedList L,LinkedList R)
{ int timeL;
timeL=Integer.parseInt(R.get(0).toString()); //获取到左边的时间
L.add(R.get(0));
Collections.sort(L);
R.remove(0);
Collections.sort(R);
printL(L);
System.out.print("<--------");
printR(R);
System.out.println("用时"+timeL+"秒");
return timeL;
}

static int Max2toRight(LinkedList L,LinkedList R)
{ int timeR; //获取到左边的时间
R.add(L.get(L.size()-1));
R.add(L.get(L.size()-2));
timeR=Integer.parseInt(L.get(L.size()-1).toString());
Collections.sort(R);
L.remove(L.size()-1);
L.remove(L.size()-1);
Collections.sort(L);
printL(L);
System.out.print("-------->");
printR(R);
System.out.println("用时"+timeR+"秒");
return timeR;
}

static int Last2toRight(LinkedList L,LinkedList R)
{ int timeR; //获取到左边的时间
R.add(L.get(0));
R.add(L.get(1));
timeR=Integer.parseInt(L.get(L.size()-1).toString());
Collections.sort(R);
L.remove(L.size()-1);
L.remove(L.size()-1);
Collections.sort(L);
printL(L);
System.out.print("-------->");
printR(R);
System.out.println("用时"+timeR+"秒");
return timeR;
}

static void printL(LinkedList L)
{
for(int i=0;i<L.size();i++)
{ System.out.print(L.get(i)+" ");
}
}

static void printR(LinkedList R)
{
for(int i=0;i<R.size();i++)
{ System.out.print(R.get(i)+" ");
}
}
}
回复
QuickPai 2009-03-16
希望大家帮帮忙啊
我就是看了这个游戏,然后就想写个程序看看结果
我做的有一个结果(就是玩游戏瞎蒙的)
6,8,12-->1,3 用时3秒
1,6,8,12<--3 用时1秒
1,6-->3,8,12 用时12秒
1,3,6<--8,12 用时3秒
3-->1,6,8,12 用时6秒
1,3<--6,8,12 用时1秒
-->1,3,6,8,12 用时3秒
最后总用时29秒<30秒
我也想了好久就是写不出来
这几天郁闷死啦
回复
waley_mei 2009-03-15
回复
QuickPai 2009-03-15
有没有人帮帮忙啊
谢谢诶
回复
发动态
发帖子
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
社区公告
暂无公告