在 C++ 中计算矩形中的正方形数量


给定一个长为 L、宽为 B 的矩形,其中 L>=B。目标是找到大小为 LXB 的矩形可以容纳的正方形数量。

上图显示了一个大小为 3 X 2 的矩形。它包含 2 个 2X2 的正方形和 6 个 1X1 的正方形。

正方形总数 = 6+2=8。

  • 每个大小为 LXB 的矩形都有 L*B 个 1X1 的正方形。

  • 最大的正方形大小为 BXB。

  • 对于 L=B=1,正方形数 = 1。

  • 对于 L=B=2,正方形数 = 1 + 4 = 5。(1 个 2X2 的,4 个 1X1 的)

  • 对于 L=B=3,正方形数 = 1 + 4 + 9 = 14。(1 个 3X3 的,4 个 2X2 的,9 个 1X1 的)

  • 对于 L=B=4,正方形数 = 1 + 4 + 9 + 16 = 30(1 个 4X4 的,4 个 3X3 的,9 个 2X2 的,16 个 1X1 的)

  • ……………..

  • 对于每个 BXB 矩形,正方形的数量是

for ( i=1 to B )
No. of squares + = i*i.

当 L>B 时,将添加更多正方形。当 L=B+1(比 B 多 1 列)时,则添加的正方形将为 L + ( L-1) + ….+3+2+1 = L(L+1)/2

因此,对于额外的 L-B 列,添加的正方形将为 ( L-B ) * (B)(B+1)/2

  • 正方形总数将为 BXB 中的正方形 + (L-B) * (L)(L+1)/2。

  • 您还可以使用公式 B(B+1)(2B+1)/6 来计算级数 (1 + 4 + 9 +......BXB)(步骤 8 中)。

让我们通过示例来理解。

输入 − L=4,B=2

输出 − 矩形中的正方形数量 − 11

解释 − 8 个 1X1 的正方形和 3 个 2X2 的正方形。

输入 − L=3,B=3

输出 − 矩形中的正方形数量 − 14

解释 − 9 个 1X1 的正方形,4 个 2X2 的正方形和 1 个 3X3 的正方形。

下面程序中使用的算法如下

  • 我们取整数长度和宽度作为矩形的尺寸。

  • 函数 numofSquares(int l, int b) 获取尺寸并返回大小为 lXb 的矩形中的正方形数量。

  • 对于最大的正方形 bXb。使用 for 循环从 1 到 b,并将每个 i*i 添加到 squares 中。

  • 现在,如果 l>b。新添加的正方形将为 (l-b)(b)(b+1)/2。将其添加到 squares 中。

  • 返回 squares 作为所需结果。

注意 − 保持长度>=宽度

示例

 实时演示

#include<iostream>
using namespace std;
int numofSquares(int l, int b){
   int squares=0;
   for(int i=1;i<=b;i++) //squares inside biggest square of size breadth X breadth{
      squares += i*i;
   }
   squares+=(l-b)*b*(b+1)/2;
   return squares;
}
int main(){
   int length = 5, breadth = 4; //keep length always >= breadth
   cout << "Count of squares is :"<< numofSquares(length,breadth);
}

输出

如果我们运行以上代码,它将生成以下输出:

Count of squares is :40

更新于: 2020-08-29

626 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告