用c 求二維陣列的最大子陣列,進行單元測試

2022-08-24 05:57:08 字數 2187 閱讀 9146

一.實驗目的

1,以指定格式的文字檔案形式輸入陣列。

2,陣列由一維變為二維。

3,熟練使用git常用命令將作業簽入**版本控制平台。

4,給出單元測試/**覆蓋率的最終覆蓋率的報告。

二.實驗過程

實驗主要分為兩大部分,第一,解決演算法問題,編寫程式**。第二,複審**和完成**測試計畫。

1.編寫**

1)以文字檔案的形式輸入陣列

首先,在d盤建乙個txt文字檔案,裡面存放了目標二維陣列,

然後,將文字檔案內容讀取出來,存到二維陣列中,

再顯示處理後的二維陣列,

最後關閉檔案。

實現**如下:

#include

#include

#include

#include

using namespace std;

//txt文字必須是row行,col列儲存的文字資料

#define readdatapath "d:\\1.txt"//txt文字的路徑

執行結果如下:

2)求二維陣列的最大子陣列

原理:每列資料中第i行到第j行進行相加,這樣得到乙個列矩陣,a[1......n],這樣就轉化成乙個一維整數陣列中最大子陣列的和,

通過求得迴圈不同第i行到第j行之間的值之和,最後找到最大值。

實現**如下:

int sum[100]=,max=0,result=a[0][0],m=0;

for(i=0;isum[j])

else

if(max>result)

}m++;//子陣列的行數+1

}m=0;

for(j=0;j執行結果如圖:

2.單元測試

1)先配置測試環境

過程如圖:

2)測試

1.txt的內容:

1 2 

4 6期望結果:13

執行結果:

1.txt的內容:

2 -3 -5 

8 6 -7

9 0 -8

期望結果:23

執行結果:

1.txt的內容:

-1 -2 -3

-4 -5 -6

-7 -8 -9

期望結果:-1

執行結果:

三.實驗總結

本次實驗收穫頗多。

第一,通過查資料,了解並掌握了如何以指定格式的文字檔案形式輸入陣列。

第二,明白了求二維陣列的最大子陣列的和的演算法,及**實現。

第三,學會了在vs2010上為單元測試安裝環境,並進行單元測試。

第四,提公升了變成能力和解決問題的能力。

二維陣列求最大子陣列

程式要使用的陣列放在乙個叫 input.txt 的檔案中,檔案格式是 陣列的行數,陣列的列數,每一行的元素,用逗號分開 每乙個數字都是有符號32位整數,當然,行數和列數都是正整數。演算法思想 對於一維的陣列,我們可以很容易用動態規劃的方法求得最大子陣列 所以我們將i 0.n j i.n 列舉所有行的...

求二維陣列中最大子陣列的和

題目 給出乙個 m n 的二維矩陣 元素可為正可為負 求該二維矩陣的乙個子矩陣,且此子矩陣中所有元素的和最大,並輸出該矩陣的和。分析 因為輸出的是矩陣,把每列資料中第i行到第j行進行相加,這樣得到乙個列矩陣,a 1.n 這樣就轉化成乙個一維整數陣列中最大子陣列的和,通過求得迴圈不同第i行到第j行之間...

二維陣列最大子陣列和

陣列輸出 int sum a 0 0 b,c n int imin 0,imax 0,jmin 0,jmax 0 for i 0 i c i a 0 i for i 1 i 4 i else b c j if sum b if i1 else for i imin i imax i cout cou...