public class Main {
private static int resolve(int[] arr){
//
int[] dp = new int[arr.length];
if (arr.length == 0){
return 0;
}
//initialize
dp
[0] = Math.
max(0, arr
[0]); int max = dp[0];
//
for (int i = 1; i < arr.length; i++){
dp
[i
] = Math.
max(0, arr
[i
] + dp
[i
- 1]); if (dp[i] > max){
max = dp[i];
}
}
//
return max;
}
private static int resolveR(int i, int max, int pivot, int[] arr){
//initialize
if (i == arr.length){
return max;
} else {
pivot
= Math.
max(0, arr
[i
] + pivot
); if (pivot >= max){
max = pivot;
}
return resolveR(i+1, max, pivot, arr);
}
}
public static void main
(String[] args
){ //in normal method
int[] arr = new int[]{-1,2,4,5,2,3,4,1,1,-1,-3};
System.
out.
println(resolve
(arr
)); //in recursive method
int[] dp = new int[arr.length]; //with arr.length > 0
System.
out.
println(resolveR
(0,
0,
0, arr
)); }
}
CgoKcHVibGljIGNsYXNzIE1haW4gewoKICBwcml2YXRlIHN0YXRpYyBpbnQgcmVzb2x2ZShpbnRbXSBhcnIpewogICAgLy8KICAgIGludFtdIGRwID0gbmV3IGludFthcnIubGVuZ3RoXTsKICAgIGlmIChhcnIubGVuZ3RoID09IDApewogICAgICAgIHJldHVybiAwOwogICAgfQogICAgLy9pbml0aWFsaXplCiAgICBkcFswXSA9IE1hdGgubWF4KDAsIGFyclswXSk7CiAgICBpbnQgbWF4ID0gZHBbMF07CiAgICAvLwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcnIubGVuZ3RoOyBpKyspewogICAgICAgIGRwW2ldID0gTWF0aC5tYXgoMCwgYXJyW2ldICsgZHBbaSAtIDFdKTsKICAgICAgICBpZiAoZHBbaV0gPiBtYXgpewogICAgICAgICAgICBtYXggPSBkcFtpXTsKICAgICAgICB9CiAgICB9CiAgICAvLwogICAgcmV0dXJuIG1heDsKICB9CgoKICBwcml2YXRlIHN0YXRpYyBpbnQgcmVzb2x2ZVIoaW50IGksIGludCBtYXgsIGludCBwaXZvdCwgaW50W10gYXJyKXsKICAgIC8vaW5pdGlhbGl6ZQogICAgaWYgKGkgPT0gYXJyLmxlbmd0aCl7CiAgICAgIHJldHVybiBtYXg7CiAgICB9IGVsc2UgewogICAgICBwaXZvdCA9IE1hdGgubWF4KDAsIGFycltpXSArIHBpdm90KTsKICAgICAgaWYgKHBpdm90ID49IG1heCl7CiAgICAgICAgICBtYXggPSBwaXZvdDsKICAgICAgfQogICAgICByZXR1cm4gcmVzb2x2ZVIoaSsxLCBtYXgsIHBpdm90LCBhcnIpOwogICAgfQogIH0KCiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CiAgICAvL2luIG5vcm1hbCBtZXRob2QKICAgIGludFtdIGFyciA9IG5ldyBpbnRbXXstMSwyLDQsNSwyLDMsNCwxLDEsLTEsLTN9OwogICAgU3lzdGVtLm91dC5wcmludGxuKHJlc29sdmUoYXJyKSk7CiAgICAvL2luIHJlY3Vyc2l2ZSBtZXRob2QKICAgIGludFtdIGRwID0gbmV3IGludFthcnIubGVuZ3RoXTsgLy93aXRoIGFyci5sZW5ndGggPiAwCiAgICBTeXN0ZW0ub3V0LnByaW50bG4ocmVzb2x2ZVIoMCwgMCwgMCwgYXJyKSk7CiAgfQp9