解法一:贪心

如果加上当前数小于0,那么不如不加,从头开始;否则就有继续增长的可能,继续加并更新最大值。

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. public class Main {
  5. public static void main(String[] args) throws IOException {
  6. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  7. final int n = Integer.parseInt(reader.readLine());
  8. String[] strs = reader.readLine().split(" ");
  9. int max = 0;
  10. int sum = 0;
  11. for (int i = 0, num; i < n; ++i) {
  12. num = Integer.parseInt(strs[i]);
  13. if (sum + num < 0) {
  14. sum = 0;
  15. } else {
  16. sum += num;
  17. max = Math.max(max, sum);
  18. }
  19. }
  20. System.out.println(max);
  21. }
  22. }