返回乙個整數陣列中最大子陣列的和(二)

2022-05-24 05:30:12 字數 1952 閱讀 2074

這次,在上次的情況下增加了一些新的要求。

·要求陣列從檔案讀取。

·如果輸入的陣列很大,  並且有很多大的數字,  就會產生比較大的結果 (考慮一下數的溢位), 請保證你的程式能正常輸出。

好,下面就是對**的構造。

首先,寫乙個寫入檔案的方法,並在這個方法中產生隨機數(因為想看一下在這個程式是在多少資料量級下能夠正確輸出,乙個乙個按太麻煩了)

1

public

static

void

writer() catch

(ioexception e) 12}

13try

21 bw.write("1");

22bw.close();

2324 } catch

(ioexception e)

27 }

然後就是再從檔案中讀出這些資料,因為在讀取的過程中,當遇到最後乙個正數後面的數負數的話,就不會將後面的負數讀取到,所以在寫入文字的過程中,在最後加了乙個「1」。

下面是讀入檔案的**

1

public

static

string readtostring(string filepath) catch

(filenotfoundexception e) catch

(ioexception e)

1415 string filecontentarr = new string(filecontent).split("\r\n");

16return filecontentarr;//

返回檔案內容,預設編碼

17 }

這裡使用byte陣列來進行儲存,並且用string陣列進行分割。但是使用這個方法不能很好的解決資料溢位的問題。此問題待以後優化。

然後就是主函式。

1

public

static

void

main(string args) 13}

14 system.out.println("最大子陣列的和為:" +max);

15 }

在從檔案中讀入的資料都是string型的,所以這裡需要將讀入的資料進行型別轉化。

x[i] =integer.parseint(arr[i]);
然後接可以輸出正確的資料了,當然,資料是比較多的,所以,只能估算一下咯。

實驗截圖:

剛剛看到乙個大牛的部落格,看到了解決資料溢位的解決方案。

**

某個文字檔案中儲存了60w條記錄,以\r\n作為分隔符,現在需要從文字中一次性取出所有值並存放到乙個string陣列中。

streamreader sr = new streamreader(strfilepath, system.text.unicodeencoding.getencoding("utf-8"));

string strcontent = sr.readtoend();

string strarr = strcontent.split("\r\n".tochararray(), stringsplitoptions.removeemptyentries);

以上方式非常不建議使用,當資料量很大時很容易丟擲記憶體溢位異常,這是由於string型別自身的安全性導致的,不建議使用string型別的物件臨時儲存大量的資料。

我們應該採用下面的方式來進行大資料量的處理。

listlist =newlist();

using(streamreader _streamreaderkey =newstreamreader(strtermcachefilepath +fileinfo.name))

}

返回乙個整數陣列中最大子陣列的和。

該題的意思是 如果乙個陣列為 1 5 3 19 5 3 第乙個數之後若是該數與前乙個數之和大於該數那麼將這個和替換概數 即5 1 5,5不變 而5 3 5 則將三替換為8以此類推 當乙個數與前乙個數之和再次小於這個數時,這個數為乙個下乙個的最小陣列,如5 3 19 11 5 5 則5為下乙個最小陣列...

返回乙個整數陣列中最大子陣列的和

1.題目 要求 要求程式必須能處理1000 個元素 每個元素是int32 型別的 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 2.設計思想。分別計算出所有子陣列的和,進行比較,找出最大子陣列...

返回乙個整數陣列中最大子陣列的和

1.設計思想 將一維迴圈陣列採用遍歷的方法來尋找最大子陣列,將含n個數的迴圈陣列依次從各個點斷開,產生n個n個陣列的單鏈陣列,再遍歷尋找最大子陣列。2.出現的問題 整形陣列的生成方式 3.可能的解決方案 整形陣列隨機生成,每個子陣列的資料個數也是隨機的。4.源 include using names...