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

这个名字没人抢吧2022-10-04 11:39:541条回答

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,先查找后判断的方法运算次数较少!
程序看的不是很明白,请大家帮我写清楚,
我看的不是很明白,

已提交,审核后显示!提交回复

共1条回复
抚顺皇一 共回答了22个问题 | 采纳率95.5%
上面的程序,用了递归,所以不太好理解,也不太好给你说清楚.我帮你写了一个简单一点的,希望能帮到你,我测试过了结果是一样的.如果你还是想明白上面代码的含义就HI我吧~!public class MonkeyTest { public static int...
1年前

相关推荐

一道java算法编程题已知一线段AB的两端点坐标,以及线段外一点P,写一个函数,求P到线段AB投影的距离:public
一道java算法编程题
已知一线段AB的两端点坐标,以及线段外一点P,写一个函数,求P到线段AB投影的距离:
public static double getDistance(List ab,double[] p);
/**
*其中ab中包含两个端点的坐标(xa,ya),(xb,yb),p(xp,yp)为线段外任意一点的坐标.
*/
doulove1年前1
47638560 共回答了27个问题 | 采纳率92.6%
public static double getDistance(java.util.List ab, double[] p){
double x1,y1,x2,y2;
x1=ab.get(0)[0];
y1=ab.get(0)[1];
x2=ab.get(1)[0];
y2=ab.get(1)[1];
double k=(y2-y1)/(x2-x1);
double b=y1-k*x1;
return (k*p[0]-p[2]+b)/java.lang.Math.sqrt(k*k+1);
}
帮忙编一下这道题 java算法 谢谢了
帮忙编一下这道题 java算法 谢谢了
定义一个数学工具类完成以下功能:
求任意两个数之间的和与积,例如输入10,20,求10+11+12+.和10*11*12*.
求斐波拉契
蓝帘小生1年前1
Sebestain 共回答了25个问题 | 采纳率88%
public integer getSum(int a,int b){
if(a==b){
return a;
}
int m,n;
if(a
JAVA算法问题,在一个List里,成对换位
JAVA算法问题,在一个List里,成对换位
给出一个包含node对象的list,
public class Node{
public int n; // node的值
public Node next; //list中的下一个Node,可看做指针
}
要求一个算法,更换两个Node的值和指针(Node的Node属性),在一个队列中每两个更换一次。
例如1à2à3à4à5à6… 换位成2à1à4à3à6à5…
注意:有的队列的最后一个元素的指针指向第一个元素。即node(n).nextNode==node(1)
求算法
英文版原题:
Swap pairs of elements in list
You are given a singly linked list:
struct node
{
int n; //value of element
struct node *next; //pointer to next element in list
}
Write a function that will swap pairs of elements in a given singly-linked list. Note that you have to actually swap the elements, not just the values, and that you should modify the list in place (i.e. you should not create a copy of the list).
struct node *swapPairs(struct node *l);
For instance, the list 1à2à3à4à5à6… becomes 2à1à4à3à6à5…
IMPORTANT: Your implementation must also work for circular lists where the tail is pointing back to the head of the list. You do not have to check if the tail points to an intermediate (non-head) element.
If you would like to solve the problem in C#, consider the following definitions:
public class Node
{
public int n; // value of element
public Node next; // pointer to next element in list
}
public Node swapPairs(Node head);
lee008631年前1
happyjoseph 共回答了16个问题 | 采纳率100%
....哦....so难~不过很具
6、求java算法 已知四个带权的结点:(A,1),(B,2),(C,2),(D,3),构造Huffman数,并给出每个
6、求java算法 已知四个带权的结点:(A,1),(B,2),(C,2),(D,3),构造Huffman数,并给出每个结点的编码.
prophet19841年前1
约尊酒商量歧路 共回答了27个问题 | 采纳率81.5%
Dim P As Single,SJ,SHI As Integer,FEN As Integer,MIAO As Integer
Private Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = True
P = 3.1415926
End Su

大家在问