关键:下标的计算
一维->二维
一个n个元素的一维数组,转换为r行c列的二维数组
对于一维数组中任意一个元素的下标i(0 <= i < n)
其对应的二维数组下标为 (i / c, i % c), 显然, 只与列数c有关,而与行数r无关
code like this
int
[] a
=
new
int
[n];
int [,] b = new int [r, c];
for ( int i = 0 ; i < n; i ++ )
b[i / c, i % c] = a[i];
int [,] b = new int [r, c];
for ( int i = 0 ; i < n; i ++ )
b[i / c, i % c] = a[i];
also can write like this
for
(
int
i
=
0
; i
<
r; i
++
)
{
for ( int j = 0 ; j < c; j ++ )
{
b[i, j] = a[i * c + j];
}
}
{
for ( int j = 0 ; j < c; j ++ )
{
b[i, j] = a[i * c + j];
}
}
二维->一维
int
[,] a
=
new
int
[r, c];
int [] b = new int [r * c];
for ( int i = 0 ; i < b.Length; i ++ )
b[i] = a[i / c, i % c];
int [] b = new int [r * c];
for ( int i = 0 ; i < b.Length; i ++ )
b[i] = a[i / c, i % c];