可以在C中从一张纸上切出的最大给定大小的矩形

我们给定了纸张的尺寸,它的长度为L,宽度为B。此外,我们给出了一个小矩形的尺寸,其长度为L,宽度为b。目的是找到可以从一张纸上切出的最小矩形的最大数量。

我们将执行以下步骤-

  • 首先,我们将进行水平对齐,分别为图纸和矩形的长度L和l。开始将L与l对齐,将B与b对齐,并计算矩形。

  • 然后在垂直对齐方式中也执行相同的操作。再数一次。返回计数的最大值。

让我们以一个例子来理解。

输入值 

Sheet L=18, B=6 Rectangle l=4, b=3

输出结果 

Maximum rectangles: 8

说明 

Horizontal 18/4=4 6/3=2 2*4=8 rectangles possible
Vertical 18/3=6 6/4=1 6*1=6 rectangles possible
Maximum rectangles here is 8

输入值 

Sheet L=10, B=6 Rectangle l=4, b=2

输出结果 

Maximum rectangles: 6

说明 

Horizontal 10/4=2 6/2=3 2*3=6 rectangles possible
Vertical 10/2=5 6/4=1 5*1=5 rectangles possible
Maximum rectangles here is 6

以下程序中使用的方法如下

  • 变量长度和宽度用于存储图纸尺寸。

  • 变量len和bre用于存储矩形的尺寸。

  • 函数maxRectangles(int L,int B,int l,int b)获取图纸和矩形的尺寸,并返回可能的最大矩形数。

  • 变量numh和numv用于存储可以水平和垂直切割的矩形的数量。

  • 对于水平,将cols = L / l和row = B / b分开,可能的矩形为numh = cols *行。

  • 对于垂直方向,将cols = L / b和row = B / l分开,可能是矩形,numv = cols *行。

  • 返回上面两个步骤numh或numv中获得的结果的最大值。

示例

#include <stdio.h>
int maxRectangles (int L, int B, int l, int b){
   int numh = 0, numv = 0;
   //如果可能,水平切割矩形
   if (l <= L && b <= B){
      //一个矩形是一个单元格
      int cols = B / b;
      int rows = L / l;
      //矩形总数=单元总数
      numh = rows * cols;
   }
   //如果可能,请垂直切割矩形
   if (l <= B && b <= L){
      int cols = L / b;
      int rows = B / l;
      numv = rows * cols;
   }
   //返回最大可能的矩形
   return numh>numv?numh:numv;
}
//驱动程式码
int main (){
   int Length = 18;
   int Breadth =6;
   int len = 4, bre = 3;
   printf("Maximum rectangles: %d",maxRectangles(Length,Breadth,len,bre));
   return 0;
}

输出结果

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

Maximum given sized rectangles that can be cut out of a sheet of paper: 8