其实代码很简单,需要的可以参考下。
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;
返回,错误。