在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 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告