从行和列计算索引
我想计算任何给定行和列的索引(基数为0),其中行和列为基数1且列数已知,例如2
如果max_columns为2且index为5,则从索引计算行号:
Row = (index % max_columns) + (int)(index / max_columns) = (5 % 2) + (int)(5 / 2) = 1 + 2 = 3
从索引计算列号
Col = max_columns - (index % max_columns) = 2 - (5 % 2) = 2 - 1 = 1
问题是如何从索引为0的任何索引计算行和列。这是为了计算java应用程序中数组的索引。
由’Willem Van Onsem’提供给我的正确解决方案
其中Row为3,Col为2,max_columns为2:
Index = (Row * max_columns) + Col - max_columns - 1 = (3 * 2) + 2 - 2 - 1 = 6 + (-1) = 5
给定每行包含n列,列和行的从零开始的索引为:
int row = index/n; int col = index%n;
现在,由于您的row
和col
的偏移量为1
,因此您只需向两者添加1
:
int row1 = (index/n)+1; int col1 = (index%n)+1;
对于反函数 ,如果row
和col
偏移0
,则可以将索引计算为:
int index = row*n+col;
或者如果索引偏移1
:
int index = row1*n+col1-n-1;
row = (int) (index / max_columns + 1) col = (index % max_columns + 1)