import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class MaxProduct { public static void main(String[] args) { ArrayList entered = new ArrayList(); BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); while(true) { System.out.print("Number " + (entered.size()+1) + " [enter empty line at end]: "); try{ String line = console.readLine(); if(line.equals("")) { if(entered.size() == 0) { System.out.println("Cannot compute for empty array."); } else { int[] data = new int[entered.size()]; System.out.print("Array:"); for(int i = 0; i < data.length; i++) { data[i] = entered.get(i).intValue(); System.out.print(" " + data[i]); if(i < data.length - 1) System.out.print(","); } System.out.println(); System.out.println("Slow: " + slowMaxProduct(data)); System.out.println("Fast: " + fastMaxProduct(data)); } entered = new ArrayList(); } else { try { entered.add(Integer.decode(line)); } catch(NumberFormatException e) { System.out.println("Not a valid integer."); } } } catch(IOException e) { System.err.println("Could not open dictionary."); System.exit(0); } } } private static int slowMaxProduct(int[] nums) { int n = nums.length; int max = nums[0]; for(int i = 1; i != n; i++) { int p = nums[i]; int sub = p; for(int j = i - 1; j != -1; j--) { p *= nums[j]; if(p > sub) sub = p; } if(sub > max) max = sub; } return max; } private static int fastMaxProduct(int[] nums) { return 0; } }