矩陣累加(指標實現)

2021-07-25 07:35:15 字數 1182 閱讀 5680

描述:程式設計計算k個整型矩陣的累加,並輸出結果。若給定的矩陣不能相加,則直接終止程式並輸出」matrix can』t add!」。若計算機記憶體不足以計算給定矩陣的累加,則直接終止程式並輸出」not enough memory!」。

輸入:第1行輸入1個整數k,表示待累加矩陣的個數。

第2行輸入2個整數,表示第1個矩陣的行數m1和列數n1。

第3行到第m1+2行順次輸入m1*n1個整數,表示第1個矩陣的內容。

第m1+3行輸入2個整數,表示第2個矩陣的行數m2和列數n2。

第m1+4行到第m1+m2+3行順次輸入m2*n2個整數,表示第二個矩陣的內容。

依次類推輸入k個矩陣。

1、矩陣可用二維陣列實現,注意其大小可變,應考慮動態記憶體分配,同時注意記憶體釋放的問題,注意不能用c99變長陣列。

2、二維陣列的動態記憶體分配可採用兩種方式實現:(1)先分配m個空間儲存行位址,再為每一行分配n個空間儲存整型數,二維陣列第 i 行第 j 列元素對應為a[i][j],此時記憶體空間不一定連續。(2)採用大小為m*n的一維陣列模擬二維陣列,二維陣列第 i 行第 j 列元素對應為a[i*n+j],此時記憶體空間是連續的。

輸出:按行列順序輸出矩陣c中的所有資料。

輸入樣例:

2 <—待累加的矩陣個數

2 2 <—第1個矩陣的行數和列數

3 4

5 6

2 2 <—第2個矩陣的行數和列數

1 2

4 5

輸出樣例:

4 6

9 11

#include 

#include

#include

int main()

p = (int **)malloc(a[i]*sizeof(int *));

}for(t = 0; t < a[i]; t++)

}for(k=0; kfor(j=0; jscanf("%d",&p[k][j]);

c[k][j]+=p[k][j];}}

}for(k=0; k0]; k++)

if(j==b[0])

printf("\n");

}for(s=0; s0]; s++)

free(p[s]);

free(p);

return

0;}

子矩陣最大累加和

問題描述如下 給定乙個矩陣matrix,其中的值有正 有負 有0,返回子矩陣的最大累加和。藍橋備戰資料 演算法很美 chapter4 多維陣列和矩陣 先想到了一維陣列的求子陣列最大累加和的題目,時間複雜度為o n 利用這種思維來處理這道題目。第一列第二列 第三列最大累加和 第一行 1 1 1 1第一...

子矩陣的最大累加和

題目 給定乙個矩陣matrix,其中的值有正 有負 有零,返回子矩陣的最大累加和。例如矩陣matrix為 90 48 78 64 40 64 81 7 66 其中,最大累加和的子矩陣為 48 78 40 64 7 66 所以返回子矩陣的最大累加和為209。解析 最簡單也最容易想到的方法是求出矩陣中的...

子矩陣的最大累加和

一 題目要求 給定乙個矩陣matrix,其中的值有正有負,有0,返回子矩陣的最大累加和,例如,矩陣matrix為 90 48 78 64 40 64 81 07 66 其中,最大累加和的子矩陣為 48 78 40 64 7 66 所以返回累加和209 二 解題思路 將矩陣matrix n n 的每一...