疎行列の乗算(行列)


Description
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; } } }