如何在网格内的列中查找项目数?
我有一个网格(具体来说是listview控件),并且有一些项目。
有时给定的行可能未满。 ANd的值可以少于最大列数。我需要在给定的列中找到项目数。
如果网格像
1 2 3
4 5 6
7
如果输入列为1,则我们需要输出3,而输入2或3则需要输出2。
我有用于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的索引:
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是整数除法。