在C++中,如何在棋盤上進行最少的切割,使得棋盤不會被分成兩部分


概念

給定一個 A x B 的棋盤,任務是計算我們可以在棋盤上構建的最大切割次數,以使棋盤不會被分成兩部分。

示例

示例如下:

輸入

A = 2, B = 4

輸出

Number of maximum cuts = 3

輸入

A = 2, B = 2

輸出

Number of maximum cuts = 1

方法

  • 對於 A = 2,B = 2,我們只能構建 1 次切割(紅色標記)。如果我們再進行 1 次切割,則棋盤將被分成 2 部分。

  • 對於 A = 2,B = 4,我們可以進行 3 次切割(紅色標記)。如果我們再進行 1 次切割,則棋盤將被分成 2 部分。

因此,可以觀察到切割次數 = (A-1) * (B-1)。

示例

線上演示

//This is C++ implementation of above approach
#include <bits/stdc++.h>
using namespace std;
// function that calculates the maximum no. of cuts
int numberOfCuts1(int A, int B){
   int result1 = 0;
   result1 = (A - 1) * (B - 1);
   return result1;
}
// Driver Code
int main(){
   int A = 4, B = 4;
   // Calling function.
   int Cuts = numberOfCuts1(A, B);
   cout << "Maximum cuts = " << Cuts;
   return 0;
}

輸出

Maximum cuts = 9

更新於: 2020年7月23日

153 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.