我想计算任何给定行和列的索引(基数为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
答案 0 :(得分:6)
鉴于每一行都包含 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;
答案 1 :(得分:0)
row = (int) (index / max_columns + 1)
col = (index % max_columns + 1)