稀疏矩陣加法 PTA

2021-09-23 22:25:20 字數 1188 閱讀 8606

給定兩個矩陣a和b,求其和矩陣c=a+b。
第一行包含兩個數row和col,分別表示矩陣的行數和列數,a和b的維度是一致的。

第二行只有乙個數n​1,表示接下來要輸入的a中的非零元素的個數。

接下來是n1行,每一行都是i j a[i,j] 這樣的形式,表示的a中第i行第j列的元素a[i,j],為了與大多數程式語言保持一致,它們都是從零開始的,也就是說下標的有效範圍是[0,row−1]×[0,col−1]。

在n​1行之後,是乙個數n​2​​ ,表示矩陣b中非零元素的數量。

此後n​2行描述b中的非零元素,它們與此前描述a中非零元素的形式一致。

注:矩陣元素的輸入均遵循行主序。這裡的所有的輸入均可用int型別正確表示,可以假設輸入均是合法的。

因為輸入合法,所以第一行的row和col沒有"意義"。
第一行輸出和矩陣c=a+b中的絕對值大於0.1的元素個數n3,此後是n​3行,按照行主序輸出其中的非零元素,依次是行、列的下標和對應的元素。

2 2

11 1 1

10 0 1

2

0 0 1

1 1 1

#include#include#includetypedef structnode;

int main(void)

//n2

scanf("%d", &n2);

//b input

for(i = 0; i < n2; i++)

i = 0; //a

j = 0; //b

k = 0; //c

while(i < n1 && j < n2)

else if(b[j].i < a[i].i)

else

else if(b[j].j < a[i].j)

else

i++;

j++;

}} }

if(i == n1 && j != n2)

} if(j == n2 && i != n1)

} if(k == 0)

else

printf("%d %d %d", c[i].i, c[i].j, c[i].v);

} return 0;

}

稀疏矩陣加法 資料結構實驗題(稀疏矩陣加法)

題目描述 思路 先使用乙個結構體對稀疏矩陣進行壓縮儲存 typedef struct array 之後用歸併的思想,將a矩陣與b矩陣相加的結果存放在c矩陣中if a i row 若a行號小於b行號,則將a放入c else if a i row b j row 若a行號大於b行號,則存b else 若...

稀疏矩陣的加法(c語言)

用二維陣列發現一直段錯誤,查閱資料發現是棧中一次存不了太多二維陣列 最後還是轉回到結構體來寫,我感覺陣列更簡單的 include include includeint main int nu scanf d d row,col scanf d n1 for i 0 i0.1 printf d cou...

對稱矩陣 稀疏矩陣及矩陣的逆置與加法

矩陣之對稱矩陣 稀疏矩陣逆置與加法 一 對稱矩陣及壓縮儲存 由於對稱矩陣對角線上下相同,因此我們可以採取壓縮儲存。我們先了解一下壓縮儲存,對稱矩陣儲存時只需要儲存上三角或下三角的資料,所以最多儲存n n 1 2個資料。我們就知道了我們需要空間的大小。如下 includeusing namespace...