求二維陣列的最大子集和

2022-05-23 16:00:11 字數 1319 閱讀 6088

小組成員(李夏蕾  楊世超)

這次的題目是接著上次的一維陣列進行的進一步的引申,雖然考慮了很多的方法,但還是覺得窮舉法是最保險的一種,下面是我們的思路:

我們採用的是自己輸入行數和列數,然後輸入資料進行測試。同時申請了兩個陣列用來存放子集的長度和寬度,好用來輸出。

主要的就是for迴圈了,首先是最外層的,先從i=0開始,當j=0時,先將包含a[0][0]的所有子集都遍歷一遍,並求出最大值,記錄下來,然後是a[0][1],如此迴圈下去。在迴圈中利用的是一維陣列求最大子集的方法,不同的是在其中加入了for(x=0;x而在遍歷過程中,通過比較max的值,讓其在每乙個資料中找出乙個最大的,同時記錄下最大值的行長度和列長度以便輸出。對於子陣列的輸出也和一維陣列相同,只是改為二維的而已。

下面是迴圈模組的**:

for(i=0;i)

if(max<=sum)

} }}

}

程式源**如下:

#includeusing

namespace

std;

#define n 100

intmain()

}for(i=0;i)

if(max<=sum)

} }}

}max=b[0][0

]; t=0

; n=0

;

for(i=0;i)}}

cout

<

最大子陣列和是:";

cout

cout

<

子串行為

"<

for(i=t;i<=d[t][n];i++)

cout

<

}return0;

}

執行結果如下:

二維陣列求最大子陣列

程式要使用的陣列放在乙個叫 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...