Java作业。查找五个连续数字的最大乘积
我们已经开始在学校学习Java,并且我们已经得到了一些家庭作业要做。我已经设法做到了五分之四,但最后一次真的很痛苦 基本上:编写一个程序,在1000个地方找到五个最大的乘积 连续数字 这是电话号码 你有什么办法解决这个问题吗Java作业。查找五个连续数字的最大乘积,java,algorithm,Java,Algorithm,我们已经开始在学校学习Java,并且我们已经得到了一些家庭作业要做。我已经设法做到了五分之四,但最后一次真的很痛苦 基本上:编写一个程序,在1000个地方找到五个最大的乘积 连续数字 这是电话号码 你有什么办法解决这个问题吗 如果此说明不清楚,请通知我,并尝试再次向您解释。假设您所提供的大数字中的连续数字是5位 您将希望一次遍历数字1中的每一个字符,抓住其后的四位数字,找到产品。如果高于上一个产品,则存储它和5位数字组合,然后移动到下一位数字,直到处理完所有数字。假设连续,则表示提供的大数字中的
如果此说明不清楚,请通知我,并尝试再次向您解释。假设您所提供的大数字中的连续数字是5位
您将希望一次遍历数字1中的每一个字符,抓住其后的四位数字,找到产品。如果高于上一个产品,则存储它和5位数字组合,然后移动到下一位数字,直到处理完所有数字。假设连续,则表示提供的大数字中的5位
您将希望一次遍历数字1中的每一个字符,抓住其后的四位数字,找到产品。如果高于上一个产品,请将其和5位数字组合存储,然后移动到下一位数字,直到处理完所有数字。最简单的方法是在数字上使用一种“滑动窗口”。窗口大小为5,您可以跟踪最大数量:
一种可能的优化方法是,如果窗口包含零,则可以跳过第二步。更好的是,您可以立即移动窗口,直到零后面的第一个数字。最简单的方法是在数字上使用一种“滑动窗口”。窗口大小为5,您可以跟踪最大数量:
一种可能的优化方法是,如果窗口包含零,则可以跳过第二步。更好的是,您可以立即移动窗口,直到零后面的第一个数字。
我不是为你写的。。。这是你的家庭作业;)
我不是为你写的。。。这是你的家庭作业;) 我认为优化算法应该是这样的: 1) 抓住前五个数字 2) 如果当前集合包含
0
,则抓取0
后的前五个数字。执行此操作,直到到达不包含0
的集合。(如果所有集合都包含0
-不太可能-返回0
)
3) 计算5个数字(x1
,x2
,x3
,x4
,x5
)的乘积,如下所示:
p1 = x5 * x4
p2 = x3 * p1
p3 = x2 * p2
p = x1 * p3
4) 如果p
大于上一个p
,则将其存储
5) 丢弃第一个数字,然后添加下一个(x6
)
6) 如果新的p
大于旧的,则转至步骤3)
您将乘法的数量减少了5倍,因为您不会继续将5个数字相乘,而是将2个数字相乘。
请记住丢弃包含
0
的序列,并尝试沿着这些线优化算法。我认为优化算法如下所示:
1) 抓住前五个数字
2) 如果当前集合包含0
,则抓取0
后的前五个数字。执行此操作,直到到达不包含0
的集合。(如果所有集合都包含0
-不太可能-返回0
)
3) 计算5个数字(x1
,x2
,x3
,x4
,x5
)的乘积,如下所示:
p1 = x5 * x4
p2 = x3 * p1
p3 = x2 * p2
p = x1 * p3
4) 如果p
大于上一个p
,则将其存储
5) 丢弃第一个数字,然后添加下一个(x6
)
6) 如果新的p
大于旧的,则转至步骤3)
您将乘法的数量减少了5倍,因为您不会继续将5个数字相乘,而是将2个数字相乘。
请记住丢弃包含
0
的序列,并尝试沿着这些线优化算法。您遇到的问题是哪一部分?你能用一个较小的数字来计算吗?你的意思是你应该先计算5的第一个块,然后再计算第二个块,然后。。。或者试着从第一个数字开始,然后是第二个数字等等?你能告诉我们更多关于你陷入困境的地方吗?我们可以做一个