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

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

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

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

## Javascript

`<script>` `// Javascript implementation of above approach` `// function that calculates the` `// maximum no. of cuts` `function` `numberOfCuts(M, N)` `{` ` ` `var` `result = 0;` ` ` `result = (M - 1) * (N - 1);` ` ` `return` `result;` `}` `// Driver Code` `var` `M = 4, N = 4;` `// Calling function.` `var` `Cuts = numberOfCuts(M, N);` `document.write( ` `"Maximum cuts = "` `+ Cuts);` `</script>` |

**Output:**

Maximum cuts = 9

**Time Complexity:** O(1)

**Auxiliary Space:** O(1)

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.