课堂测试第二阶段

题目:返回一个整数数组中最大子数组的和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 @   哈喽伍六柒  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示