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 = 4Output:Maximum cuts = 3Input:M = 3, N = 3Output:Maximum cuts = 4

**Representation:**

- 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.
- 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 <bits/stdc++.h> ` `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; ` `} ` |

*chevron_right*

*filter_none*

## 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); ` ` ` `} ` `} ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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 ` `} ` |

*chevron_right*

*filter_none*

## PHP

`<?php ` `// php implementation of above approach ` ` ` `// function that calculates the ` `// maximum no. of cuts ` `function` `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 ` `?> ` |

*chevron_right*

*filter_none*

**Output:**

Maximum cuts = 9

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.