首页 > 解决方案 > 在二维数组中,如何根据文本大小和列数得出单元格位置?

问题描述

所以我不完全确定如何措辞,但我会尽力而为。所以我有一个字符串,比如说“HelloWorld”,然后我把它放到一个有 4 列的二维数组中:

0 1 2 3
_______
H E L L
O W O R
L D

我希望能够根据列数和字符串大小找到“W”所在单元格的订单号。前任。给定字符串大小和列数,我如何得出“W”的位置?换句话说,假设单元格的编号顺序如下所示,“W”位于第 5 位:

0 1  2  3
4 5  6  7
8 9 10 11

但是如何根据列数和字符串大小来计算呢?我正在尝试根据列的索引等在 for 循环中执行此操作。我通过取 的上限来知道行数text size/num of cols,在本例中为 3。

标签: c++algorithm

解决方案


如果我的问题是正确的,那么这些东西的计算就像@v78评论一样,但是他使用的拓扑与你的不同(交换了 x,y)......

它利用模算术(在整数算术上完成)......


/是除法
%是除法后的余数

如果你仍然不知道%它是做什么的,你可以这样看:

a%b = a - (a/b)*b

所以a/b被截断为整数,所以如果你再乘以它将b小于a除非完全b除法a。所以两者的减法会给你余数。您可以将其重写为:

(a/b)*b + a%b = a

回到您的问题,如果cols列数 col,row是 2D 数组位置并且i是线性位置并且n是大小,那么:

i = row*cols + col     // get string index from array position

row = i/cols           // get array position from string index
col = i%cols

rows = (n+cols-1)/cols // number of rows from string size

推荐阅读