求数组中子数组和的最大值
1.正常的。
使用前缀和进行求解:
需要注意的是数组下标从1开始,0号空着。
还有就是求i到j之间的前缀和公式为sum[j]-sum[i-1];
import java.util.Scanner; public class class_test { public static void main(String[] args) { int Max=100; int n; Scanner in = new Scanner(System.in); int[] num=new int[Max];//存原本数组 int[] sum=new int[Max];//存前n项和 num[0]=0; sum[0]=0; int rs;//结果 System.out.println("输入个数:"); n = in.nextInt(); for(int i=1;i<=n;i++) { num[i] = in.nextInt(); sum[i] = sum[i - 1] + num[i]; } rs=sum[1]; for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) rs=Math.max(rs,sum[j]-sum[i-1]); System.out.println(rs); } }
2.首位相连的。