環狀二維陣列

2022-07-18 22:33:17 字數 1358 閱讀 6199

1.題目

輸入乙個二維整形陣列,陣列裡有正數也有負數。

二維陣列首尾相接,象個一條首尾相接帶子一樣。

陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。

求所有子陣列的和的最大值。

2.設計思路

參照環狀一維陣列,將二維陣列進行擴充套件。只將陣列的列數擴大為原來的2*n-1,行數不變。

3.源**

#include #include

using

namespace

std;

#define max(a,b) ((a)>(b)?(a):(b))

#define maxn 100

inta[maxn][maxn];

intpartsum[maxn][maxn];

//計算子矩陣的和

int matrixsum(int s, int t, int i, int

j)int

main()

for (j = col+1; j <= 2 * col - 1; j++)

//cout << a[i][j] << " ";

} cout

<

}for (i = 0; i <= row; i++)

partsum[i][

0] = 0

;

for (j = 0; j <=2* col-1; j++)

partsum[

0][j] = 0

;

//計算矩陣的部分和

for (i = 1; i <= row; i++)

for (j = 1; j <=2* col-1; j++)

partsum[i][j] = a[i][j] + partsum[i - 1][j] + partsum[i][j - 1] - partsum[i - 1][j - 1

];

intn1, n2;

int maxsofar = a[1][1

];

for (n1 = 1; n1 <= row; n1++)

for (n2 = n1; n2 <= row; n2++)

}cout

<

}

4.結果截圖

5.總結

相似的程式可以借鑑,二維陣列可以轉化為一維陣列。對於每個程式,都要找到相似點,這樣就會變得簡單。

環狀二維陣列最大子陣列求和

題目 返回乙個二維整數陣列中最大子陣列的和。要求 輸入乙個二維整形陣列,陣列裡有正數也有負數。二維陣列首尾相接,象個一條首尾相接帶子一樣。n陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 結對程式設計要求 兩人結對完成程式設計任務。一...

環狀二維陣列(改進版)

改進版的程式中對此進行了判斷。此問題分為兩種,一種是最大子數組成環,一種是最大子陣列未成環。未成環的部分之前已實現,下面是成環部分。開始的思路是 將矩陣進行擴大,類似於一維陣列,但是擴大後就會出現子矩陣的範圍有可能超出矩陣的範圍。所以在此處要有乙個判斷。改進後的程式 include include ...

二維陣列 二維陣列和指標

include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...