在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
广告