C++ 查找给定的每行按钮数需要多少行?

C++ 查找给定的每行按钮数需要多少行?,c++,algorithm,math,C++,Algorithm,Math,我想布局X按钮 开始时,Y项可以在一行中。 第一行布局后,下一行只能显示Y-1项,以此类推 假设我有13个按钮,第一行最多可以有6个按钮,我需要3行。第一个有6个按钮,第二个有5个按钮,第三个有2个按钮 谢谢 算法可以做什么: intgetrowcount(intstartcols,intnumitems) 如果列数不变,我知道如何使用MOD,但是如果每行的最大列数减少,你会怎么做?在这种情况下,我尝试将英文翻译成代码 int getRowCount(int startCols, int num

我想布局X按钮

开始时,Y项可以在一行中。 第一行布局后,下一行只能显示Y-1项,以此类推

假设我有13个按钮,第一行最多可以有6个按钮,我需要3行。第一个有6个按钮,第二个有5个按钮,第三个有2个按钮

谢谢

算法可以做什么:

intgetrowcount(intstartcols,intnumitems)


如果列数不变,我知道如何使用MOD,但是如果每行的最大列数减少,你会怎么做?

在这种情况下,我尝试将英文翻译成代码

int getRowCount(int startCols, int numItems) {
  int currentCols = startCols;
  int numRows = 0;

  while (numItems > 0) {      // as long as items remain
    numRows += 1;             // add another row
    numItems -= currentCols;  // reduce the remaining items by the current number of columns
    currentCols--;            // reduce the number of columns by one
  }
}
最好使用一些边缘案例来完成场景。问自己这样的问题:

如果numItems为0,我会得到什么答案? 如果startCols为0,我会得到什么答案?
如果numItems==startCols,我会得到什么答案呢?

那么你的问题在哪里?你想出了什么?你有多少个按钮?如果
X
是一个大数字,我可以建议使用
O(logn)
算法,其中
N=#个列