标签:动态规划 图片 print 有一个 博客 思考 源代码 int find
发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选)、源代码、结果截图、总结。
public static void main(String[] args) {
int [] a = {1,-2,3,10,-4,7,2,-5};
int maxsofar = 0;
int sum = 0;
//进入循环
for(int i=0;i<8;i++) {
sum=0;
//每次求出一个子数组的和就和目前的最大值进行比较
for(int j=i;j<8;j++) {
sum+=a[j];
maxsofar = Math.max(maxsofar, sum);
}
}
System.out.println(maxsofar);
}
public static void main(String[] args) {
int [ ] a = {1,-2,3,10,-4,7,2,-5};
int result = FindGreatestSumOfSubArray(a);
System.out.println(result);
}
private static int FindGreatestSumOfSubArray(int[] a) {
int len=a.length;
if(len==0) {
return 0;
}
//第一个变量对应公式中的e
//第二个变量记录已扫描到的子数组最大值的和
int max_ending_here,max_so_for;
max_ending_here=max_so_for=a[0];
//对数组进行扫描,扫描一次记录一次
for(int x:a) {
max_ending_here = Math.max(x, max_ending_here+x);
max_so_for = Math.max(max_so_for, max_ending_here);
}
return max_so_for;
}
public static int maxSubarraySumCircular(int[] A) {
if(A==null||A.length<1){
return 0;
}
int curMax,max,curMin,min,sum;
curMax = max = curMin =min = sum = A[0];
for(int i=1;i<A.length;i++){
sum+=A[i];
curMax = Math.max(A[i],curMax+A[i]);
curMin = Math.min(A[i],curMin+A[i]);
max = Math.max(max,curMax);
min = Math.min(min,curMin);
}
if(max<0)
return max;
return Math.max(sum-min,max);
}
public static void main(String[] args) {
int i = 0, n;
int a[] = new int[100];
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
for (i = 0; i < n; i++) {
a[i] = scanner.nextInt();
}
int max = maxSubarraySumCircular(a);
scanner.close();
System.out.println(max);
}
标签:动态规划 图片 print 有一个 博客 思考 源代码 int find
原文地址:https://www.cnblogs.com/wushenjiang/p/12368326.html