课堂测试第二阶段

题目:返回一个整数数组中最大子数组的和02。 程序要使用的数组放在一个叫 input.txt 的文件中, 文件格式是: 数组的行数, 数组的列数, 每一行的元素, (用逗号分开) 每一个数字都是有符号32位整数。 当然, 行数和列数都是正整数。例如下面的文件说明数组是有1行, 6列, 元素依次是: 5, 6, –3, 8, –9, 2

这个题目和第一个题的变化在于数据数据在文件中且能实现二位数组的输入,但是这个题的要求是可将二维转化成一维的进行计算

下面是代码:

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

public class T1 {

public static void main(String[] args) throws IOException {


// FileReader fr = null;
try {

FileReader fr=new FileReader("src/main/data/data.txt");
BufferedReader br = new BufferedReader(fr);
String line="";
String[] arrs=null;

StringBuffer str = new StringBuffer();
int count = 0;
while ((line=br.readLine())!=null) {

count++;

System.out.println(line);
if(count >= 3) {

str.append(line);

str.append(",");
}
}
br.close();
fr.close();


long[] a = new long[10010];

String str2 = str.toString();
String[] arr2 = null;
arr2 = str2.split(",");

for(int i = 0; i < arr2.length; i++) {
a[i] = Integer.parseInt(arr2[i]);
}

int n = a.length;
long[] b = new long[n];
b[0] = Math.max(a[0] + b[0], b[0]);
for (int i = 1; i < n; i++) {
b[i] = Math.max(b[i - 1] + a[i], a[i]);
b[i] = Math.max(b[i], 0);
}
Arrays.sort(b);
System.out.println(b[n - 1]);


}catch (FileNotFoundException exception) {

System.out.println("文件打开失败!!!");

}finally {
return;
}



}
}


posted @ 2022-03-18 11:25  哈喽伍六柒  阅读(28)  评论(0)    收藏  举报