C ++中N次切割的最大块数

给定任务是计算可通过在水平或垂直方向上总共N个切割中切割给定的正方形块而获得的相同大小的正方形或矩形块的最大数目。

现在让我们使用示例了解我们必须做的事情-

输入-N = 8

输出-25

说明-当N = 8时,垂直切口的数量= 4,水平切口的数量= 4。

总件数= 25

12345
678910
1112131415
161718岁1920
2122232425

输入-7

输出-20

12345
678910
1112131415
161718岁1920

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

  • 如果N是切口的数量,而我们必须使所得的块最大化,则必须进行相等数量的水平和垂直切口。

    如果N为偶数,则水平和垂直切口将相等;否则,如果N为奇数,则水平切口将比垂直切口大1,反之亦然。

    因此,水平的数量= N / 2,垂直的切口数量= NH。

  • 在函数中,MaxPieces()初始化int类型的变量H = N / 2以存储水平切割的数量。

  • 初始化另一个int类型的变量V = NH以存储垂直切割的数量。

  • 最终件数=(水平行)*(垂直行)=(H + 1)*(V + 1)

示例

#include <bits/stdc++.h>
using namespace std;
int MaxPieces(int N){
   //H是水平切割的数量
   int H = N / 2;
   //V是垂直切口的数量
   int V = N-H;
   //最大件数=(H + 1)*(V + 1)
   return ((H + 1) * (V + 1));
}
//主要功能
int main(){
   //削减数量
   int N = 7;
   cout << "Max pieces = "<<MaxPieces(N);
   return 0;
}

输出结果

如果运行上面的代码,我们将获得以下输出-

20