Given a positive integer **N**, the task is to construct a matrix of size **N * N** such that all the matrix elements are distinct from the range **[1, N ^{2}]** and the sum of elements in both the diagonals of every

**2 * 2**submatrices is even.

**Examples:**

Input:N = 3Output:

1 2 3

4 5 6

7 8 9Explanation:

Diagonal elements of every 2 * 2 matrices in the output matrix are { {1, 5}, {2, 4}, {2, 6}, {3, 5}, {4, 8}, {5, 7}, {5, 9}, {6, 8} }. It can be observed that the sum of every diagonal is even.

Input:N = 4Output:

1 2 3 4

6 5 8 7

9 10 11 12

14 13 16 15

**Approach: **Follow the steps below to solve the problem:

- Initialize a matrix, say
**mat[][]**, to store the matrix elements such that all the matrix elements are distinct from the range**[1, N**and the sum of matrix elements in both the diagonals of every^{2}]**2 * 2**submatrices is even. - Initialize a variable, say
**odd = 1**, to store odd numbers. - Initialize a variable, say
**even = 2**, to store even numbers. - Fill all the matrix elements,
**mat[i][j]**, by checking the following conditions:- If
**(i + j) % 2 = 0**, then set**mat[i][j] = odd**and update**odd += 2**. - Otherwise, set
**mat[i][j] = even**and update**even += 2**.

- If
- Finally, print the matrix
**mat[][]**.

Below is the implementation of the above approach:

## C++

`// C++ program for the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to construct a matrix such that` `// the sum elements in both diagonals of` `// every 2 * 2 matrices is even` `void` `generateMatrix(` `int` `N)` `{` ` ` `// Stores odd numbers` ` ` `int` `odd = 1;` ` ` `// Stores even numbers` ` ` `int` `even = 2;` ` ` `// Store matrix elements such that` ` ` `// sum of elements in both diagonals` ` ` `// of every 2 * 2 submatrices is even` ` ` `int` `mat[N + 1][N + 1];` ` ` `// Fill all the values of` ` ` `// matrix elements` ` ` `for` `(` `int` `i = 1; i <= N; i++) {` ` ` `for` `(` `int` `j = 1; j <= N; j++) {` ` ` `if` `((i + j) % 2 == 0) {` ` ` `mat[i][j] = odd;` ` ` `// Update odd` ` ` `odd += 2;` ` ` `}` ` ` `else` `{` ` ` `mat[i][j] = even;` ` ` `// Update even` ` ` `even += 2;` ` ` `}` ` ` `}` ` ` `}` ` ` `// Print the matrix` ` ` `for` `(` `int` `i = 1; i <= N; i++) {` ` ` `for` `(` `int` `j = 1; j <= N; j++) {` ` ` `cout << mat[i][j] << ` `" "` `;` ` ` `}` ` ` `cout << endl;` ` ` `}` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `N = 4;` ` ` `generateMatrix(N);` ` ` `return` `0;` `}` |

*chevron_right*

*filter_none*

## Java

`// Java program for the above approach` `import` `java.io.*;` `class` `GFG{` `// Function to construct a matrix such that` `// the sum elements in both diagonals of` `// every 2 * 2 matrices is even` `static` `void` `generateMatrix(` `int` `N)` `{` ` ` ` ` `// Stores odd numbers` ` ` `int` `odd = ` `1` `;` ` ` `// Stores even numbers` ` ` `int` `even = ` `2` `;` ` ` `// Store matrix elements such that` ` ` `// sum of elements in both diagonals` ` ` `// of every 2 * 2 submatrices is even` ` ` `int` `[][] mat = ` `new` `int` `[N + ` `1` `][N + ` `1` `];` ` ` `// Fill all the values of` ` ` `// matrix elements` ` ` `for` `(` `int` `i = ` `1` `; i <= N; i++) ` ` ` `{` ` ` `for` `(` `int` `j = ` `1` `; j <= N; j++) ` ` ` `{` ` ` `if` `((i + j) % ` `2` `== ` `0` `) ` ` ` `{` ` ` `mat[i][j] = odd;` ` ` ` ` `// Update odd` ` ` `odd += ` `2` `;` ` ` `}` ` ` `else` ` ` `{` ` ` `mat[i][j] = even;` ` ` ` ` `// Update even` ` ` `even += ` `2` `;` ` ` `}` ` ` `}` ` ` `}` ` ` `// Print the matrix` ` ` `for` `(` `int` `i = ` `1` `; i <= N; i++) ` ` ` `{` ` ` `for` `(` `int` `j = ` `1` `; j <= N; j++) ` ` ` `{` ` ` `System.out.print(mat[i][j] + ` `" "` `);` ` ` `}` ` ` ` ` `System.out.println();` ` ` `}` `}` `// Driver Code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `N = ` `4` `;` ` ` ` ` `generateMatrix(N);` `}` `}` `// This code is contributed by Dharanendra L V` |

*chevron_right*

*filter_none*

## Python3

`# Python program for the above approach` `# Function to construct a matrix such that` `# the sum elements in both diagonals of` `# every 2 * 2 matrices is even` `def` `generateMatrix(N):` ` ` ` ` `# Stores odd numbers` ` ` `odd ` `=` `1` `;` ` ` `# Stores even numbers` ` ` `even ` `=` `2` `;` ` ` `# Store matrix elements such that` ` ` `# sum of elements in both diagonals` ` ` `# of every 2 * 2 submatrices is even` ` ` `mat ` `=` `[[` `0` `for` `i ` `in` `range` `(N ` `+` `1` `)] ` `for` `j ` `in` `range` `(N ` `+` `1` `)] ;` ` ` `# Fill all the values of` ` ` `# matrix elements` ` ` `for` `i ` `in` `range` `(` `1` `, N ` `+` `1` `):` ` ` `for` `j ` `in` `range` `(` `1` `, N ` `+` `1` `):` ` ` `if` `((i ` `+` `j) ` `%` `2` `=` `=` `0` `):` ` ` `mat[i][j] ` `=` `odd;` ` ` `# Update odd` ` ` `odd ` `+` `=` `2` `;` ` ` `else` `:` ` ` `mat[i][j] ` `=` `even;` ` ` `# Update even` ` ` `even ` `+` `=` `2` `;` ` ` `# Prthe matrix` ` ` `for` `i ` `in` `range` `(` `1` `, N ` `+` `1` `):` ` ` `for` `j ` `in` `range` `(` `1` `, N ` `+` `1` `):` ` ` `print` `(mat[i][j], end ` `=` `" "` `);` ` ` `print` `();` `# Driver Code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` `N ` `=` `4` `;` ` ` `generateMatrix(N);` `# This code is contributed by 29AjayKumar` |

*chevron_right*

*filter_none*

## C#

`// C# program for the above approach` `using` `System;` `class` `GFG{` `// Function to construct a matrix such that` `// the sum elements in both diagonals of` `// every 2 * 2 matrices is even` `static` `void` `generateMatrix(` `int` `N)` `{` ` ` ` ` `// Stores odd numbers` ` ` `int` `odd = 1;` ` ` `// Stores even numbers` ` ` `int` `even = 2;` ` ` `// Store matrix elements such that` ` ` `// sum of elements in both diagonals` ` ` `// of every 2 * 2 submatrices is even` ` ` `int` `[,] mat = ` `new` `int` `[N + 1, N + 1];` ` ` `// Fill all the values of` ` ` `// matrix elements` ` ` `for` `(` `int` `i = 1; i <= N; i++) ` ` ` `{` ` ` `for` `(` `int` `j = 1; j <= N; j++) ` ` ` `{` ` ` `if` `((i + j) % 2 == 0) ` ` ` `{` ` ` `mat[i, j] = odd;` ` ` ` ` `// Update odd` ` ` `odd += 2;` ` ` `}` ` ` `else` ` ` `{` ` ` `mat[i, j] = even;` ` ` `// Update even` ` ` `even += 2;` ` ` `}` ` ` `}` ` ` `}` ` ` `// Print the matrix` ` ` `for` `(` `int` `i = 1; i <= N; i++) ` ` ` `{` ` ` `for` `(` `int` `j = 1; j <= N; j++) ` ` ` `{` ` ` `Console.Write(mat[i, j] + ` `" "` `);` ` ` `}` ` ` `Console.WriteLine();` ` ` `}` `}` `// Driver Code` `static` `public` `void` `Main()` `{` ` ` `int` `N = 4;` ` ` ` ` `generateMatrix(N);` `}` `}` `// This code is contributed by Dharanendra L V` |

*chevron_right*

*filter_none*

**Output:**

1 2 3 4 6 5 8 7 9 10 11 12 14 13 16 15

**Time Complexity:** O(N^{2})**Auxiliary Space: **O(N^{2})

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.