疎行列の乗算(行列)
Description
2つの疎行列の乗算を計算します.
Input
最初に最初の行列の行数と列数を入力して、この行列の3つの要素の形を入力し、0で終了してから2番目の行列の行数と列数を入力して、マトリックスの3つの要素の形を入力し、0で終了します.
Output
相乗後の行列の三元グループを出力します.
Sample Input
Sample Output
2つの疎行列の乗算を計算します.
Input
最初に最初の行列の行数と列数を入力して、この行列の3つの要素の形を入力し、0で終了してから2番目の行列の行数と列数を入力して、マトリックスの3つの要素の形を入力し、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
#include
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
",i,j,sum);
}
sum = 0;
}
}
}