如何在网格内的列中找到项目数?
我有一个网格(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个变量进行跟踪?
答案 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是整数除法。