其实代码很简单,需要的可以参考下。
int countToRowColumn(const int count, int* pRows, int* pColumns) { //这两个变量可以省略。 int rows = 0; int columns = 0; if (count <= 0 || pRows == NULL || pColumns == NULL) { return -1; } //先计算列数。 columns = sqrt(count); if (columns*columns < count) { columns ++; } //再计算行数。 rows = count/columns; if (rows*columns < count) { rows ++; } *pRows = rows; *pColumns = columns; return 0; }
以5为例计算中间过程:
columns=2
columns=3
rows = 1
rows = 2
返回。
有人如下代码如何,是不是更精简?
rows = sqrt(count); columns = rows; if (rows*columns<count) { columns++; }
count=3;
rows=1;
columns=1;
columns=2;
返回,错误。