fork(1) download
  1.  
  2.  
  3.  
  4. public class Main {
  5.  
  6. private static int resolve(int[] arr){
  7. //
  8. int[] dp = new int[arr.length];
  9. if (arr.length == 0){
  10. return 0;
  11. }
  12. //initialize
  13. dp[0] = Math.max(0, arr[0]);
  14. int max = dp[0];
  15. //
  16. for (int i = 1; i < arr.length; i++){
  17. dp[i] = Math.max(0, arr[i] + dp[i - 1]);
  18. if (dp[i] > max){
  19. max = dp[i];
  20. }
  21. }
  22. //
  23. return max;
  24. }
  25.  
  26.  
  27. private static int resolveR(int i, int max, int pivot, int[] arr){
  28. //initialize
  29. if (i == arr.length){
  30. return max;
  31. } else {
  32. pivot = Math.max(0, arr[i] + pivot);
  33. if (pivot >= max){
  34. max = pivot;
  35. }
  36. return resolveR(i+1, max, pivot, arr);
  37. }
  38. }
  39.  
  40. public static void main(String[] args){
  41. //in normal method
  42. int[] arr = new int[]{-1,2,4,5,2,3,4,1,1,-1,-3};
  43. System.out.println(resolve(arr));
  44. //in recursive method
  45. int[] dp = new int[arr.length]; //with arr.length > 0
  46. System.out.println(resolveR(0, 0, 0, arr));
  47. }
  48. }
Success #stdin #stdout 0.06s 32480KB
stdin
Standard input is empty
stdout
22
22