这里使用最传统的方法:
矩阵A的行 乘以矩阵B的列 来计算矩阵的乘法的,所以比较简单
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 矩阵乘法
{
class Program
{
static void Main(string[] args)
{
int[,] a = { { 1, 2, 3 }, { 4, 5, 6 } };
int[,] b = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
int[,] c = new int[2, 2];
matrixMultipy(a, b, c, 2, 3, 3, 2);
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
Console.Write("{0} ", c[i, j]);
if ((j + 1) % 2 == 0)
{
Console.WriteLine();
}
}
}
Console.Read();
}
/// <summary>
/// 矩阵的乘法
/// </summary>
/// <param name="a">第一个矩阵</param>
/// <param name="b">第二个矩阵</param>
/// <param name="c">算出来的矩阵</param>
/// <param name="ra">第一个的行数</param>
/// <param name="ca">第一个的列数</param>
/// <param name="rb">第二个的行数</param>
/// <param name="cb">第二个的列数</param>
static void matrixMultipy(int[,] a, int[,] b, int[,] c, int ra, int ca, int rb, int cb)
{
if (ca != rb)
{
throw new Exception("行与列要相等");
}
for (int i = 0; i < ra; i++)
{
for (int j = 0; j < cb; j++)
{
int sum = a[i, 0] * b[0, j];
for (int k = 1; k < ca; k++)
{
sum += a[i, k] * b[k, j];
}
c[i, j] = sum;
}
}
}
}
}