題目描述:最大子數(shù)組和問(wèn)題 1.元素個(gè)數(shù)不超過(guò)100個(gè),存儲(chǔ)在文本文件中。 2.元素具有首尾相接特點(diǎn)。 3.輸出結(jié)果: ?。?)求出的最大子數(shù)組和 ?。?)該字?jǐn)?shù)組在原數(shù)組中的位置(起始下標(biāo)和結(jié)束下標(biāo)) 代碼如下: package com.company; import java.io.*; import java.util.Scanner; public class A { public static int[] method01(File file){ System.out.println("請(qǐng)輸入少于100個(gè)數(shù):"); Scanner sc = new Scanner(System.in); String str = sc.next().toString();//輸入字符串 例如輸入:1,-5,9,-2,3 String[] s = str.split(",");//以符號(hào)“,”為分割線,將分割后的內(nèi)容一次存入字符數(shù)組s中 例如:此時(shí)字符串?dāng)?shù)組s中的內(nèi)容為:{"1","-5","9","-2","3"},字符串?dāng)?shù)組長(zhǎng)度為5 int[] array = new int[s.length];//生成一個(gè)與字符數(shù)組同等長(zhǎng)度的整型數(shù)組,用于存儲(chǔ)將字符串轉(zhuǎn)換為整型的內(nèi)容 if(s.length >= 100){ System.out.println("你輸入的數(shù)多于100個(gè)!"); return null; } System.out.println("你輸入的數(shù)組是:"); for (int i = 0;i < s.length;i++){ array[i] = Integer.parseInt(s[i]);//這一步是逐一將字符串轉(zhuǎn)化為整型,以便于返回值的返回 例如:此時(shí)的array數(shù)組的內(nèi)容為:{1,-5,9,-2,3} System.out.print(s[i]+" "); } System.out.println(); //進(jìn)入寫(xiě)操作的函數(shù)內(nèi) method02(file,str); return array;//將處理好的數(shù)組返回給調(diào)用者 } public static void method02(File file,String str){ BufferedWriter out = null; try{ /* FileOutputStream fos = new FileOutputStream(file,true); OutputStreamWriter osw = new OutputStreamWriter(fos); out = new BufferedWriter(osw); */ out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file,true))); out.write(str+"\r\n"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args){ File file = new File("D:\\IntelliJIDEA2019\\javaProject1\\src\\com\\company\\a.txt");//在指定路徑下生成一個(gè)a.txt int[] array = null; array = method01(file); if(array != null){ B b = new B(); b.MSA(array,array.length);//最后調(diào)用核心算法實(shí)現(xiàn)功能 } } }
package com.company; public class B { public void MSA(int[] a,int len){ int cur = 0; int max1 = a[0]; int start = 0; int end = 0; for (int i = 0;i < len;i++){ if(cur < 0){ cur = 0; start = i; end = i; } cur += a[i]; if(cur > max1){ max1 = cur; end = i; } } System.out.print("最大字串為:"+max1+",下標(biāo)從"+start+"到"+end+"(從0開(kāi)始)"); } }
運(yùn)行結(jié)果如下:
生成的txt文件內(nèi)容如下:
|
|
來(lái)自: 精品唯居 > 《待分類(lèi)》