一维数组表示矩阵相乘

 protected void Page_Load(object sender, EventArgs e)
    {
        // CountSum();
        Count_matrix_mul();
    }
    //floor向下取整
    //ceiling 向上取整
    //开平方就用Math.Sqrt, 开n次方:Math.Pow(double, 1/n)
    //一维数组存储二维矩阵N*N,得到行和列
    // 行:i / n ;列:i % n
    private void Count_matrix_mul()
    {
        int[] numA = { 1, 2, 4, 3, 1, 4, 5, 3, 2 };
        int[] numB = { 3, 4, 1, 2, 1, 3, 4, 4, 2 };
        int A_len = numA.Length;
        int B_len = numB.Length;
        int[] numC = new int[A_len];
        int C_len = numC.Length;
        int n = (int)Math.Sqrt(A_len);//代表N*N矩阵
        for (int i = 0; i < A_len; i++)//遍历A中每个数
        {
            int k = 0;
            for (int j = (i / n) * n; j < (i / n) * n + n; j++) // 遍历行
            {

                numC[i] += numA[j] * numB[(i % n) + k];
                k = k + n;

            }

        }
        Label1.Text = "C矩阵:</br>";
        for (int m = 0; m < C_len; m++)
        {
            Label1.Text += numC[m] + "&nbsp;";
            if ((m+1) % n ==0)
            {
                Label1.Text += "<br/>";
            }

        }
    }

原文地址:https://www.cnblogs.com/wwwfj/p/3214506.html