Create matrix whose sum of diagonals in each sub matrix is even
Last Updated :
10 Feb, 2022
Given a number N, the task is to create a square matrix of size N*N with values in range [1, N*N], such that the sum of each diagonal of an even sub-square matrix is even.
Examples:
Input: N = 3
Output:
1 2 3
4 5 6
7 8 9
Explanation:For each even sub-square matrix the sum of each diagonal is a even number.
1 2
4 5
sum of each diagonal is 6 and 6 i.e even number.
Input: N = 4
Output:
1 2 3 4
6 5 8 7
9 10 11 12
14 13 16 15
Explanation:
For each even sub-square matrix the sum of each diagonal is a even number.
1 2
6 5
sum of each diagonal is 6 and 8 i.e even number.
Approach: The idea is to arrange elements from 1 to N*N in the below-given ways:
- Initialize odd and even by 1 and 2 elements respectively.
- Iterate two nested loop in the range [0, N].
- If the sum of indices in the two nested loops is even the print the value of odd and increment odd by 2 and if the sum is odd then print the value of even, and increment even by 2.
Below is the implementation of the above approach:
C++
#include <iostream>
using namespace std;
void evenSubMatrix( int N)
{
int even = 1;
int odd = 2;
for ( int i = 0; i < N; i++) {
for ( int j = 0; j < N; j++) {
if ((i + j) % 2 == 0) {
cout << even << " " ;
even += 2;
}
else {
cout << odd << " " ;
odd += 2;
}
}
cout << "\n" ;
}
}
int main()
{
int N = 4;
evenSubMatrix(N);
return 0;
}
|
Java
import java.util.*;
class GFG{
static void evenSubMatrix( int N)
{
int even = 1 ;
int odd = 2 ;
for ( int i = 0 ; i < N; i++)
{
for ( int j = 0 ; j < N; j++)
{
if ((i + j) % 2 == 0 )
{
System.out.print(even + " " );
even += 2 ;
}
else
{
System.out.print(odd + " " );
odd += 2 ;
}
}
System.out.println();
}
}
public static void main(String[] args)
{
int N = 4 ;
evenSubMatrix(N);
}
}
|
Python3
def evenSubMatrix(N):
even = 1
odd = 2
for i in range (N):
for j in range (N):
if ((i + j) % 2 = = 0 ):
print (even, end = " " )
even + = 2
else :
print (odd, end = " " )
odd + = 2
print ()
N = 4
evenSubMatrix(N)
|
C#
using System;
class GFG{
static void evenSubMatrix( int N)
{
int even = 1;
int odd = 2;
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < N; j++)
{
if ((i + j) % 2 == 0)
{
Console.Write(even + " " );
even += 2;
}
else
{
Console.Write(odd + " " );
odd += 2;
}
}
Console.WriteLine();
}
}
public static void Main(String[] args)
{
int N = 4;
evenSubMatrix(N);
}
}
|
Javascript
<script>
function evenSubMatrix( N)
{
let even = 1;
let odd = 2;
for (let i = 0; i < N; i++)
{
for (let j = 0; j < N; j++)
{
if ((i + j) % 2 == 0)
{
document.write(even + " " );
even += 2;
}
else
{
document.write(odd + " " );
odd += 2;
}
}
document.write( "<br>" );
}
}
let N = 4;
evenSubMatrix(N);
</script>
|
Output:
1 2 3 4
6 5 8 7
9 10 11 12
14 13 16 15
Time Complexity: O(N*N)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...