java 孤岛问题_java算法题,话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好...

news/2024/10/25 20:29:19/

java算法题,话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好

java算法题,

话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有有棵椰子树,还有一只猴子?

大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉先.

晚上某个家伙悄悄滴起床,悄悄滴将椰子分成5份,结果发现多一个椰子,顺手就给了幸运的猴子,然后又悄悄滴藏了一份,然后把剩下滴椰子混在一起放回原处,最后还是悄悄滴回去睡觉了.

过了会儿,另一个家伙也悄悄滴起床,悄悄滴将剩下滴椰子分成5份,结果发现多一个椰子,顺手就又给了幸运的猴子,然后又悄悄滴藏了一份,把剩下滴椰子混在一起放回原处,最后还是悄悄滴回去睡觉了.

又过了一会 ...

...

又过了一会 ...

总之5个家伙都起床过,都做了一样的事情 :blush;

早上大家都起床,各自心怀鬼胎的分椰子了,这个猴子还真不是一般的幸运,因为这次把椰子分成5分后居然还是多一个椰子,只好又给它了.

这堆椰子最少有多少个?

import java.util.GregorianCalendar;

public class MonkeyTest {

public static int I = 1;

public static int T = 1;//两个静态变量,用于记录运算次数

public static int getHai(int n,int a) {//根据输入的最后分配数和分配次数,查找可能是的初始数.

I++;//每进入方法一次,计数加1

int num = 5 * a + 1;

if (n == 0) {

return num;

} else {

return getHai(n - 1,num / 4);//第一次符合则继续向下递归

}

}

public static boolean isHai(int n,int a) {//判断所输入的数是不是符合分配规则

I++;//进入方法一次计数加1

T++;//直接判断时每进入一次计数加1

int num = a / 5;

if (a % 5 = 1)

return false;

else if (n == 0)

return true;

else {

return isHai(n - 1,4 * num);//一次符合时递归下次

}

}

public static void main(String[] args) {

int i = 1,sum = 0,n = 1,k = 1;

GregorianCalendar gc = new GregorianCalendar();

long time = gc.getTimeInMillis();

while (true) {//先查找可能符合标准的数,再判断是不是真的符合标准

sum = getHai(5,i);

if (isHai(5,sum)) {

System.out.println(sum + ":" + i + ":" + MonkeyTest.I);

break;

}

i++;//可直接记录查找次数

}

System.out.println(gc.getTimeInMillis() - time);//显示用时毫秒数

time = gc.getTimeInMillis();

while (true) {//用直接判断的方式查找

if (isHai(5,n)) {

System.out.println(n + ":" + k +":"+MonkeyTest.T);

break;

}

n += 5;//该数起码减1之后可以整除一次5,因而直接每次加5

k++;//记录运行次数

}

System.out.println(gc.getTimeInMillis() - time);

}

}

测试结果时间都消耗很少,结果未15621,先查找后判断的方法运算次数较少!

程序看的不是很明白,请大家帮我写清楚,

我看的不是很明白,


http://www.ppmy.cn/news/204076.html

相关文章

习题:海盗船(广搜)

海盗船(corsair) 【问题描述】 有一个很有趣的游戏叫做海盗船。这是一个在9*8的棋盘上进行的游戏,棋盘上的每个格子可能是下面4种状态之一: “.”:表示当前格子为空; “S”:表示你的船所在的位置…

【广搜】海盗船

海盗船(corsair) 【问题描述】 有一个很有趣的游戏叫做海盗船。这是一个在9*8的棋盘上进行的游戏,棋盘上的每个格子可能是下面4种状态之一: “.”:表示当前格子为空; “S”:表示你的船所在的…

技术分享:逆向海盗船k95机械键盘

引文 在几年前我买了一个海盗船 K95 Vengeance机械键盘,键盘有上有背光功能,于是我在考虑是不是可以修改一下。但作者表示购买来的键盘上面没有很多的资料可供利用,需要注意的是,新版的K95与旧版本的K95的CUE不太一样,…

2.2加勒比海盗船 最优装载问题

在北美洲东南部,有一片神秘的海域,那里碧海蓝天、阳光明媚,这正是传说中海盗最活跃的加勒比海(Caribbean Sea)。17世纪时,这里更是欧洲大陆的商旅舰队到达美洲的必经之地,所以当时的海盗活动非常…

贪心算法之加勒比海盗船最优装载问题

1、问题 在北美洲东南部,有一片神秘的海域,那里碧海蓝天、阳光明媚,这正是传说中海盗最活跃的加勒比海,这里更是欧洲大陆的商旅舰队到达美洲的必经之地,所以当时的海盗活皇家舰......动非常猖獗,海盗不仅攻击过往商人,甚至攻击英国有一天,海盗们截获了一艘装满各种各样古董的货…

海盗船问题

问题描述:ps:原题不是去这样的,差不多是下面这样的 茫茫大海,生活着一群海盗,海盗们整日饮酒作乐悠哉游哉,海盗老大渐渐厌倦,提出要去出海寻找传说中的 one piece,海盗们一致同意出海寻宝,他们有…

h0154.加勒比海盗船——最优装载问题

在北美洲东南部,有一片神秘的海域,那里碧海 蓝天、阳光明媚,这正是传说中海盗最活跃的加勒比 海(Caribbean Sea)。17 世纪时,这里更是欧洲大陆 的商旅舰队到达美洲的必经之地,所以当时的海盗活 …

1、mysql的安装与配置

下载安装配置 下载zip文件解压之后配置环境变量 在path后面添加mysql bin文件夹的路径:C:\Program Files (x86)\MySQL\bin 配置完环境变量后,在C:\Program Files (x86)\MySQL目录下新建一个配置文件mysql.ini,同时在bin的同级目录C:\Program …