最大子段和 Java
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] dp = new int[n + 1];int max = Integer.MIN_VALUE;for (int i = 1; i <= n; i++) {int a = sc.nextInt();// 每次判断以a结尾的子数列和,只要前一个子数列和是大于零的,那么就加上它使自身增大,否则不加,从自身开始新的子数列dp[i] = dp[i - 1] > 0 ? a + dp[i - 1] : a;if (dp[i] > max) max = dp[i];}System.out.println(max);}
}
每日一水~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~