稀疏矩陣的乘法(陣列)
阿新 • • 發佈:2019-02-16
Description
計算兩個稀疏矩陣的乘法
Input
首先輸入第一個矩陣的行數和列數,再輸入該矩陣的三元組形式,以0 0 0結束
然後輸入第二個矩陣的行數和列數,再輸入該矩陣的三元組形式,以0 0 0結束
Output
輸出相乘後的矩陣三元組。
- Sample Input
3 3 1 1 1 2 2 2 2 3 4 3 1 -4 0 0 0 3 3 1 3 -2 2 3 -5 3 1 8 3 2 -6 0 0 0
- Sample Output
1 3 -2 2 1 32 2 2 -24 2 3 -10 3 3 8
#include<stdio.h> #include <malloc.h> int main() { int *a[1000], *b[1000]; int m1, n1, m2, n2; int x, y, z; int p, q; int i, j, sum = 0; for (i = 0; i< 1000; i++) { a[i] = (int*)malloc(1000 * sizeof(int)); b[i] = (int*)malloc(1000 * sizeof(int)); for (j = 0; j < 1000; j++){ a[i][j] = 0; b[i][j] = 0; } } scanf("%d%d",&m1,&n1); while(1) { scanf("%d%d%d",&x,&y,&z); if(x == 0 && y == 0 && z == 0) { break; } a[x][y] = z; } scanf("%d%d",&m2,&n2); while(1) { scanf("%d%d%d",&x,&y,&z); if(x == 0 && y == 0 && z == 0) { break; } b[x][y] = z; } for(i = 1;i <= m1;i++) { for(j = 1;j <= n2;j++) { p = 1; q = 1; while(p <= n1) { sum += a[i][p]*b[q][j]; p++; q++; } if(sum != 0) { printf("%d %d %d\n",i,j,sum); } sum = 0; } } }