课堂测试第二阶段
题目:返回一个整数数组中最大子数组的和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;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具