Java中的家庭作业.找到连续五位数的最大乘积

Rok*_*sel 1 java algorithm

我们已经开始在学校学习Java,我们已经做了一些功课.我已经成功完成了5分中的4分,但最后一分是真正的痛苦.

基本上:编写一个程序,找到(在1000个长数字中)五个连续数字的最大乘积.

这是http://pastebin.com/PFgL6jcM的数字

你有任何想法如何解决这个问题?

如果这是不明确的指示,请通知我,并会再次向您解释.

Rob*_*bin 5

最天真的方法是在数字上使用一种"滑动窗口".窗口大小为5,您可以跟踪最大数量:

  1. 窗口以前5位数字开头
  2. 将窗口中的5位数相乘,并与当前最大值进行比较.如果更大,则更新当前最大值,如果要跟踪哪些数字只是检索最大值,则可能还存储索引
  3. 将窗口移动一位并从顶部开始

可以立即想到的一个优化是,如果窗口包含零,则可以跳过第二步.更好的是,您可以立即将窗口移动到零后面的第一个数字.