給定兩個矩陣a和b,求其和矩陣c=a+b。
第一行包含兩個數row和col,分別表示矩陣的行數和列數,a和b的維度是一致的。
第二行只有乙個數n1,表示接下來要輸入的a中的非零元素的個數。
接下來是n1行,每一行都是i j a[i,j] 這樣的形式,表示的a中第i行第j列的元素a[i,j],為了與大多數程式語言保持一致,它們都是從零開始的,也就是說下標的有效範圍是[0,row−1]×[0,col−1]。
在n1行之後,是乙個數n2 ,表示矩陣b中非零元素的數量。
此後n2行描述b中的非零元素,它們與此前描述a中非零元素的形式一致。
注:矩陣元素的輸入均遵循行主序。這裡的所有的輸入均可用int型別正確表示,可以假設輸入均是合法的。
因為輸入合法,所以第一行的row和col沒有"意義"。
第一行輸出和矩陣c=a+b中的絕對值大於0.1的元素個數n3,此後是n3行,按照行主序輸出其中的非零元素,依次是行、列的下標和對應的元素。
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...