# Minimum Cuts can be made in the Chessboard such that it is not divided into 2 parts

• Last Updated : 14 Apr, 2021

Given M x N Chessboard. The task is to determine the Maximum numbers of cuts that we can make in the Chessboard such that the Chessboard is not divided into 2 parts.
Examples:

```Input: M = 2, N = 4
Output: Maximum cuts = 3

Input: M = 3, N = 3
Output: Maximum cuts = 4```

Representation:

1. For M = 2, N = 2 We can only make 1 cut (mark in red). if we make 1 more cut then the chessboard will divide into 2 pieces.
2. For M = 2, N = 4 We can makes 3 cuts (marks in red). if we make 1 more cut then the chessboard will divide into 2 pieces.

So, it can be observed that no. of cuts = (m-1) * (n-1).
Below is the implementation of the above approach:

## C++

 `// C++ implementation of above approach``#include ``using` `namespace` `std;` `// function that calculates the``// maximum no. of cuts``int` `numberOfCuts(``int` `M, ``int` `N)``{``    ``int` `result = 0;` `    ``result = (M - 1) * (N - 1);` `    ``return` `result;``}` `// Driver Code``int` `main()``{``    ``int` `M = 4, N = 4;` `    ``// Calling function.``    ``int` `Cuts = numberOfCuts(M, N);` `    ``cout << ``"Maximum cuts = "` `<< Cuts;` `    ``return` `0;``}`

## Java

 `// Java implementation of above approach` `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``public` `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 cuts``def` `numberOfCuts(M, N):``    ``result ``=` `0``    ` `    ``result ``=` `(M ``-` `1``) ``*` `(N ``-` `1``)``    ` `    ``return` `result` `# Driver code``if` `__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   ``}`

## PHP

 ``

## Javascript

 ``

Output:

`Maximum cuts = 9`

Time Complexity: O(1)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up