Maximum Cuts in Chessboard such that it is not divided into 2 parts
Last Updated : 3 Oct, 2023
Given M x N Chessboard. The task is to determine the Maximum number of cuts that we can make in the Chessboard such that the Chessboard is not divided into 2 parts.
Examples:
Input: M = 2, N = 2
Output: Maximum cuts = 1
Explanation: We can only make 1 cut (mark in red). if we make 1 more cut then the chessboard will divide into 2 pieces.
Maximum Cuts in Chessboard such that it is not divided into 2 parts( 2*2 Chessboard)
Input: M = 2, N = 4
Output: Maximum cuts = 3
Explanation: We can makes 3 cuts (marks in red). if we make 1 more cut then the chessboard will divide into 2 pieces.
Maximum Cuts in Chessboard such that it is not divided into 2 parts( 2*4 Chessboard)
Approach:
To find the maximum number of cuts in an M x N chessboard without dividing it into two parts, it can observed that formula is (M-1) * (N-1). This approach involves making M-1 horizontal cuts and N-1 vertical cuts. Further cuts would result in dividing the chessboard into disconnected sections, so this formula provides the optimal solution for maximizing cuts while keeping the board intact.
Below is the implementation:
C++
// C++ implementation of above approach#include<bits/stdc++.h>usingnamespacestd;// function that calculates the// maximum no. of cutsintnumberOfCuts(intM,intN){intresult=0;result=(M-1)*(N-1);returnresult;}// Driver Codeintmain(){intM=4,N=4;// Calling function.intCuts=numberOfCuts(M,N);cout<<"Maximum cuts = "<<Cuts;return0;}
Java
// Java implementation of above approachclassGFG{// function that calculates the// maximum no. of cutsstaticintnumberOfCuts(intM,intN){intresult=0;result=(M-1)*(N-1);returnresult;}// Driver Codepublicstaticvoidmain(Stringargs[]){intM=4,N=4;// Calling function.intCuts=numberOfCuts(M,N);System.out.println("Maximum cuts = "+Cuts);}}
Python3
# Python3 implementation of # above approach# function that calculates the# maximum no. of cutsdefnumberOfCuts(M,N):result=0result=(M-1)*(N-1)returnresult# Driver codeif__name__=='__main__':M,N=4,4# Calling function.Cuts=numberOfCuts(M,N)print("Maximum cuts = ",Cuts)# This code is contributed by# Kriti_mangal
C#
//C# implementation of above approach usingSystem;publicclassGFG{// function that calculates the // maximum no. of cuts staticintnumberOfCuts(intM,intN){intresult=0;result=(M-1)*(N-1);returnresult;}// Driver Code staticpublicvoidMain(){intM=4,N=4;// Calling function. intCuts=numberOfCuts(M,N);Console.WriteLine("Maximum cuts = "+Cuts);}//This code is contributed by akt_mit }
JavaScript
<script>// Javascript implementation of above approach// function that calculates the// maximum no. of cutsfunctionnumberOfCuts(M,N){varresult=0;result=(M-1)*(N-1);returnresult;}// Driver CodevarM=4,N=4;// Calling function.varCuts=numberOfCuts(M,N);document.write("Maximum cuts = "+Cuts);</script>
PHP
<?php// php implementation of above approach// function that calculates the// maximum no. of cutsfunctionnumberOfCuts($M,$N){$result=0;$result=($M-1)*($N-1);return$result;}// Driver Code$M=4;$N=4;// Calling function.$Cuts=numberOfCuts($M,$N);echo"Maximum cuts = ",$Cuts;// This code is contributed by ANKITRAI1?>