01个人作业课堂——求最大子数组的和02

代码:
package bean; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; /** * @version 1.0 * @Author: wuyi * @date 2022/3/18 11:05 */ public class Three { public static void main(String[] args) { String[] words = new String[1000]; int m = 0; int length = 0; try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("src/main/java/bean/aa.txt"))); String linestr; while ((linestr = br.readLine()) != null) { words[m++] = linestr; length++; } br.close(); } catch (Exception e) { System.out.println("文件操作失败"); e.printStackTrace(); } String[] arr1 = words[0].split(",");//提行数 int[] b1 = new int[arr1.length]; int i; int j; for (j = 0; j < b1.length; j++) { b1[j] = Integer.parseInt(arr1[j]); } String[] arr2 = words[1].split(",");//提列数 int[] b2 = new int[arr2.length]; for (j = 0; j < b2.length; j++) { b2[j] = Integer.parseInt(arr2[j]); } int t=2; int[][] a3 = new int[100][100]; for (i = 0; i < b1[0]; i++) { String[] arr3 = words[t].split(","); for (j = 0; j < arr3.length; j++) { a3[i][j] = Integer.parseInt(arr3[j]); } t++; } int Sum = 0; int maxSum = 0; int p; for (p = 0;p<b1[0];p++) {//按单行算 for (j = 0; j < b2[0]; j++) { for (i = j; i < b2[0]; i++) { Sum += a3[p][i]; if (Sum > maxSum) { maxSum = Sum; } if (Sum < 0) { Sum = 0; } } Sum = 0; } } if (maxSum == 0) { for (p = 0; p < b1[0]; p++) { for (i = 0; i < b2[0]; i++) { if (i == 0) { maxSum = a3[p][i]; } if (a3[p][i] > maxSum) { maxSum = a3[p][i]; } } } } for (p = 0;p<b2[0];p++) {//按单列算 for (j = 0; j < b2[0]; j++) { for (i = j; i < b1[0]; i++) { Sum += a3[i][p]; if (Sum > maxSum) { maxSum = Sum; } if (Sum < 0) { Sum = 0; } } Sum = 0; } } if (maxSum == 0) { for (p = 0; p < b2[0]; p++) { for (i = 0; i < b1[0]; i++) { if (i == 0) { maxSum = a3[i][p]; } if (a3[p][i] > maxSum) { maxSum = a3[p][i]; } } } } int s1; int s2 = 0; int s3 = 0; int l; if(b1[0]<b2[0]){ s1=b2[0]; } else{ s1=b1[0]; } for (j = 0; j < b2[0]; j++) {//按多行和多列算 for (i = j; i < s1; i++) { for(l=0;l<i+1;l++){ s2+=a3[i][l]; s3+=a3[l][i]; } Sum = Sum+a3[i][i]+s2+s3; if (Sum > maxSum) { maxSum = Sum; } if (Sum < 0) { Sum = 0; } } Sum = 0; } // if (maxSum == 0) { // for (p = 0; p < b1[0]; p++) { // for (i = 0; i < b2[0]; i++) { // if (i == 0) { // maxSum = a3[p][i]; // } // if (a3[p][i] > maxSum) { // maxSum = a3[p][i]; // } // } // } // } System.out.println(maxSum); // for (i = 0; i < b1[0]; i++) { // for (j = 0; j < b2[0]; j++) { // System.out.println(a3[i][j]); // } } }

浙公网安备 33010602011771号