static void Main(string[] args)
{
int[,] b = new int[8,11];
b[5, 8] = 1;
b[2, 2] = 2;
b[5, 5] = 1;
int row = b.GetLength(0); //可以理解为:第一维的长度(即行数),结果为8
int col = b.GetLength(1); //可以理解为:第一维的宽度(即列数),结果为11
int sum = 0;
for (int i = 0; i < b.GetLength(0); i++)
{
for (int j = 0; j < b.GetLength(1); j++)
{
if (b[i, j] != 0)
{
sum++;
}
Console.Write("{0}\t", b[i,j]);
}
Console.WriteLine();
}
int[,] c = new int[sum + 1, 3];
c[0, 0] = b.GetLength(0);
c[0, 1] = b.GetLength(1);
c[0, 2] = sum;
int index = 1;
for (int i = 0; i < b.GetLength(0); i++)
{
for (int j = 0; j < b.GetLength(1); j++)
{
if (b[i, j] != 0)
{
c[index, 0] = i;
c[index, 1] = j;
c[index, 2] = b[i, j];
index++;
}
}
}
Console.WriteLine("二维数组转稀疏数组如下:");
for (int i = 0; i < c.GetLength(0); i++)
{
for (int j = 0; j < c.GetLength(1); j++)
{
Console.Write("{0}\t", c[i, j]);
}
Console.WriteLine();
}
Console.WriteLine("稀疏数组转二维数组如下:");
int[,] d = new int[c[0,0],c[0,1]];
for (int i = 0; i < c.GetLength(0); i++)
{
for (int j = 0; j < c.GetLength(1); j++)
{
d[c[j+1, 0], c[j+1, 1]] = c[j + 1, 2];
}
}
for (int i = 0; i < d.GetLength(0); i++)
{
for (int j = 0; j < d.GetLength(1); j++)
{
Console.Write("{0}\t", d[i, j]);
}
Console.WriteLine();
}
}