Maximum Cuts in Chessboard such that it is not divided into 2 parts

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>using namespace std;// function that calculates the// maximum no. of cutsint numberOfCuts(int M, int N){ int result = 0; result = (M - 1) * (N - 1); return result;}// Driver Codeint main(){ int M = 4, N = 4; // Calling function. int Cuts = numberOfCuts(M, N); cout << "Maximum cuts = " << Cuts; return 0;} |
Java
// Java implementation of above approachclass GFG { // function that calculates the// maximum no. of cutsstatic int numberOfCuts(int M, int N){ int result = 0; result = (M - 1) * (N - 1); return result;}// Driver Codepublic static void main(String args[]){ int M = 4, N = 4; // Calling function. int Cuts = numberOfCuts(M, N); System.out.println("Maximum cuts = " + Cuts);}} |
Python3
# Python3 implementation of # above approach# function that calculates the# maximum no. of cutsdef numberOfCuts(M, N): result = 0 result = (M - 1) * (N - 1) return result# 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 using System;public class GFG{// function that calculates the // maximum no. of cuts static int numberOfCuts(int M, int N) { int result = 0; result = (M - 1) * (N - 1); return result; } // Driver Code static public void Main (){ int M = 4, N = 4; // Calling function. int Cuts = 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 cutsfunction numberOfCuts(M, N){ var result = 0; result = (M - 1) * (N - 1); return result;}// Driver Codevar M = 4, N = 4;// Calling function.var Cuts = numberOfCuts(M, N);document.write( "Maximum cuts = " + Cuts);</script> |
PHP
<?php// php implementation of above approach// function that calculates the// maximum no. of cutsfunction numberOfCuts($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?> |
Maximum cuts = 9
Time Complexity: O(1)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



