Construct a matrix with sum equal to the sum of diagonal elements
Given an integer N, the task is to construct a matrix of size N2 using positive and negative integers and excluding 0, such that the sum of the matrix is equal to the sum of the diagonal of the matrix.
Examples:
Input: N = 2
Output:
1 -2
2 4
Explanation:
Diagonal sum = (1 + 4) = 5
Matrix sum = (1 – 2 + 2 + 4) = 5
Input: N = 5
Output:
1 2 3 5 10
3 1 4 -9 1
-19 6 1 5 -8
4 -7 2 1 12
-17 1 1 1 1
Explanation:
Diagonal sum = (1 + 1 + 1 + 1 + 1) = 5
Matrix sum = 5
Approach:
The approach to solving the problem is to traverse all indices of the matrix and print a positive element(say y) at the N diagonal positions and equally distribute a single-valued positive and negative integer(say x and -x) in the remaining N2 – N positions.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void constructmatrix( int N)
{
bool check = true ;
for ( int i = 0; i < N; i++) {
for ( int j = 0; j < N; j++) {
if (i == j) {
cout << 1 << " " ;
}
else if (check) {
cout << 2 << " " ;
check = false ;
}
else {
cout << -2 << " " ;
check = true ;
}
}
cout << endl;
}
}
int main()
{
int N = 5;
constructmatrix(5);
return 0;
}
|
Java
public class Main {
public static void constructmatrix( int N)
{
boolean check = true ;
for ( int i = 0 ; i < N; i++) {
for ( int j = 0 ; j < N; j++) {
if (i == j) {
System.out.print( "1 " );
}
else if (check) {
System.out.print( "2 " );
check = false ;
}
else {
System.out.print( "-2 " );
check = true ;
}
}
System.out.println();
}
}
public static void main(String[] args)
{
int N = 5 ;
constructmatrix( 5 );
}
}
|
Python3
def constructmatrix(N):
check = bool ( True )
for i in range (N):
for j in range (N):
if (i = = j):
print ( 1 , end = " " )
elif (check):
print ( 2 , end = " " )
check = bool ( False )
else :
print ( - 2 , end = " " )
check = bool ( True )
print ()
N = 5
constructmatrix( 5 )
|
C#
using System;
class GFG{
public static void constructmatrix( int N)
{
bool check = true ;
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < N; j++)
{
if (i == j)
{
Console.Write( "1 " );
}
else if (check)
{
Console.Write( "2 " );
check = false ;
}
else
{
Console.Write( "-2 " );
check = true ;
}
}
Console.WriteLine();
}
}
static public void Main ()
{
int N = 5;
constructmatrix(N);
}
}
|
Javascript
<script>
function constructmatrix(N)
{
let check = true ;
for (let i = 0; i < N; i++) {
for (let j = 0; j < N; j++) {
if (i == j) {
document.write( "1 " );
}
else if (check) {
document.write( "2 " );
check = false ;
}
else {
document.write( "-2 " );
check = true ;
}
}
document.write( "<br/>" );
}
}
let N = 5;
constructmatrix(5);
</script>
|
Output:
1 2 -2 2 -2
2 1 -2 2 -2
2 -2 1 2 -2
2 -2 2 1 -2
2 -2 2 -2 1
Time Complexity: O(N2)
Auxiliary Space: O(1)
Last Updated :
23 Aug, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...