Find a way to fill matrix with 1’s and 0’s in blank positions
Given an N * M matrix mat[][] which consists of two types of characters ‘.’ and ‘_’. The task is to fill the matrix in positions where it contains ‘.’ with 1‘s and 0‘s. Fill the matrix in such a way that no two adjacent cells contain the same number and print the modified matrix.
Examples:
Input: mat[][] = {{‘.’, ‘_’}, {‘_’, ‘.’}}
Output:
1 _
_ 1
Input: mat[][] = {{‘_’, ‘_’}, {‘_’, ‘_’}}
Output:
_ _
_ _
There is no place to fill the numbers.
Approach: An efficient approach is to fill the matrix in the following pattern:
10101010…
01010101…
10101010…
skipping ‘_’ characters whenever encountered.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
#define N 2
#define M 2
void Matrix( char a[N][M])
{
char ch = '1' ;
for ( int i = 0; i < N; i++) {
for ( int j = 0; j < M; j++) {
if (a[i][j] == '.' )
a[i][j] = ch;
ch = (ch == '1' ) ? '0' : '1' ;
cout << a[i][j] << " " ;
}
cout << endl;
if (i % 2 == 0)
ch = '0' ;
else
ch = '1' ;
}
}
int main()
{
char a[N][M] = { { '.' , '_' },
{ '_' , '.' } };
Matrix(a);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static int N = 2 ;
static int M = 2 ;
static void Matrix( char a[][])
{
char ch = '1' ;
for ( int i = 0 ; i < N; i++)
{
for ( int j = 0 ; j < M; j++)
{
if (a[i][j] == '.' )
a[i][j] = ch;
ch = (ch == '1' ) ? '0' : '1' ;
System.out.print( a[i][j] + " " );
}
System.out.println();
if (i % 2 == 0 )
ch = '0' ;
else
ch = '1' ;
}
}
public static void main (String[] args)
{
char a[][] = { { '.' , '_' },
{ '_' , '.' } };
Matrix(a);
}
}
|
Python3
N = 2
M = 2
def Matrix(a) :
ch = '1' ;
for i in range (N) :
for j in range (M) :
if (a[i][j] = = '.' ) :
a[i][j] = ch;
if (ch = = '1' ) :
ch = = '0'
else :
ch = '1'
print (a[i][j],end = " " );
print ()
if (i % 2 = = 0 ) :
ch = '0' ;
else :
ch = '1' ;
if __name__ = = "__main__" :
a = [
[ '.' , '_' ],
[ '_' , '.' ],
]
Matrix(a);
|
C#
using System;
class GFG
{
static int N = 2;
static int M = 2;
static void Matrix( char [,]a)
{
char ch = '1' ;
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < M; j++)
{
if (a[i,j] == '.' )
a[i,j] = ch;
ch = (ch == '1' ) ? '0' : '1' ;
Console.Write( a[i,j] + " " );
}
Console.WriteLine();
if (i % 2 == 0)
ch = '0' ;
else
ch = '1' ;
}
}
public static void Main (String[] args)
{
char [,]a = { { '.' , '_' },
{ '_' , '.' } };
Matrix(a);
}
}
|
Javascript
<script>
const N = 2;
const M = 2;
function Matrix(a)
{
let ch = '1' ;
for (let i = 0; i < N; i++) {
for (let j = 0; j < M; j++) {
if (a[i][j] == '.' )
a[i][j] = ch;
ch = (ch == '1' ) ? '0' : '1' ;
document.write(a[i][j] + " " );
}
document.write( "<br>" );
if (i % 2 == 0)
ch = '0' ;
else
ch = '1' ;
}
}
let a = [ [ '.' , '_' ],
[ '_' , '.' ] ];
Matrix(a);
</script>
|
Time Complexity : O(N*M)
Auxiliary Space: O(1)
Last Updated :
31 May, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...