一维数组和二维数组的转换表示(C#)
关键:下标的计算
一维->二维
一个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];
作者:zdd
出处:http://www.cnblogs.com/graphics/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.