从行和列计算索引

我想计算任何给定行和列的索引(基数为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; 

现在,由于您的rowcol的偏移量为1 ,因此您只需向两者添加1

 int row1 = (index/n)+1; int col1 = (index%n)+1; 

对于反函数 ,如果rowcol偏移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)