网格内列中的项目数

时间:2010-09-14 03:58:05

标签: c++ visual-c++ logic

如何在网格内的列中找到项目数?

我有一个网格(listview控件是特定的),并有一些项目。 有时某一行可能没有满。 ANd可以包含少于最大列的值。我需要找到给定列中的项目数。

如果网格是

1   2   3
4   5   6
7       

如果输入列为1,那么我们需要输出3和2输入2或3。

我有ItemCount,CoulmnCount和RowCount的变量,用于跟踪项目,行和列的数量。

非常基本的方式是这样的:

int iItemCount=0,iItemInColumn=0;
for(int iCol=0;iCol<iColumnCount;iCol++)
    for(int iRow=0;iRow<iRowCount;iRow++,iItemCount++)
        if(iCol==iInputCol && iItemCount<iTotalItems)
            iItemInColumn++;

你能想到任何不需要循环的任何复杂方法吗?可能只利用我已有的3个变量进行跟踪?

1 个答案:

答案 0 :(得分:1)

假设从0开始的索引:

def itemsInColumn(itemCount, columnCount, inputColumn):
  lastItemColumn = (itemCount - 1) % columnCount
  if inputColumn <= lastItemColumn:
    return (itemCount + columnCount - 1) / columnCount
  else:
    return itemCount / columnCount

取决于项目总数(itemCount)和列数(columnCount)。它只计算itemCount / columnCount,并根据输入列是否小于或等于最后一项的列来向上或向下舍入。

计算“(itemCount + columnCount - 1)/ columnCount”只是使用整数除法进行舍入的技巧。一般来说,给定正整数a和b:ceil(a / b)=(a + b - 1)div b,其中div是整数除法。