C++ 中 N 次切割的最大片段數


給定任務是計算透過總共 N 次水平或垂直切割給定正方形,可以獲得的最大相同大小的正方形或矩形片段的數量。

現在讓我們用一個例子來理解我們必須做什麼 -

輸入 - N=8

輸出 - 25

解釋 - 當 N=8 時,垂直切割數 = 4,水平切割數 = 4。

總片段數 = 25

12345
678910
1112131415
1617181920
2122232425

輸入 - 7

輸出 - 20

12345
678910
1112131415
1617181920

下面程式中使用的方案如下

  • 如果 N 是切割次數,並且我們必須最大化生成的片段,則必須進行相同數量的水平和垂直切割。

    如果 N 是偶數,則將有相等的水平和垂直切割;否則,如果 N 是奇數,則水平切割將比垂直切割多 1 次,反之亦然。

    因此,水平切割數 = N/2,垂直切割數 = N-H。

  • 在 MaxPieces() 函式中,初始化一個 int 型別的變數 H =N/2 來儲存水平切割數。

  • 初始化另一個 int 型別的變數 V=N-H 來儲存垂直切割數。

  • 最終片段數 = (水平行數)*(垂直行數) = (H+1)*(V+1)

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
int MaxPieces(int N){
   //H is the number of horizontal cuts
   int H = N / 2;
   //V is the number of vertical cuts
   int V = N-H;
   // maximum number of pieces = (H+1)*(V+1)
   return ((H + 1) * (V + 1));
}
//Main function
int main(){
   //Number of cuts
   int N = 7;
   cout << "Max pieces = "<<MaxPieces(N);
   return 0;
}

輸出

如果我們執行以上程式碼,我們將得到以下輸出 -

20

更新於: 2020-08-17

642 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.