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++ implementation of the approach #include <bits/stdc++.h> using namespace std;
#define N 2 #define M 2 // Function to generate and // print the required matrix void Matrix( char a[N][M])
{ char ch = '1' ;
for ( int i = 0; i < N; i++) {
for ( int j = 0; j < M; j++) {
// Replace the '.'
if (a[i][j] == '.' )
a[i][j] = ch;
// Toggle number
ch = (ch == '1' ) ? '0' : '1' ;
cout << a[i][j] << " " ;
}
cout << endl;
// For each row, change
// the starting number
if (i % 2 == 0)
ch = '0' ;
else
ch = '1' ;
}
} // Driver code int main()
{ char a[N][M] = { { '.' , '_' },
{ '_' , '.' } };
Matrix(a);
return 0;
} |
// Java implementation of the approach import java.io.*;
class GFG
{ static int N = 2 ;
static int M = 2 ;
// Function to generate and // print the required matrix static void Matrix( char a[][])
{ char ch = '1' ;
for ( int i = 0 ; i < N; i++)
{
for ( int j = 0 ; j < M; j++)
{
// Replace the '.'
if (a[i][j] == '.' )
a[i][j] = ch;
// Toggle number
ch = (ch == '1' ) ? '0' : '1' ;
System.out.print( a[i][j] + " " );
}
System.out.println();
// For each row, change
// the starting number
if (i % 2 == 0 )
ch = '0' ;
else
ch = '1' ;
}
} // Driver code
public static void main (String[] args)
{
char a[][] = { { '.' , '_' },
{ '_' , '.' } };
Matrix(a);
}
} // This code is contributed by anuj_67.. |
# Python3 implementation of the approach N = 2
M = 2
# Function to generate and # print the required matrix def Matrix(a) :
ch = '1' ;
for i in range (N) :
for j in range (M) :
# Replace the '.'
if (a[i][j] = = '.' ) :
a[i][j] = ch;
# Toggle number
if (ch = = '1' ) :
ch = = '0'
else :
ch = '1'
print (a[i][j],end = " " );
print ()
# For each row, change
# the starting number
if (i % 2 = = 0 ) :
ch = '0' ;
else :
ch = '1' ;
# Driver code if __name__ = = "__main__" :
a = [
[ '.' , '_' ],
[ '_' , '.' ],
]
Matrix(a);
# This code is contributed by AnkitRai01 |
// C# implementation of the approach using System;
class GFG
{ static int N = 2;
static int M = 2;
// Function to generate and // print the required matrix static void Matrix( char [,]a)
{ char ch = '1' ;
for ( int i = 0; i < N; i++)
{
for ( int j = 0; j < M; j++)
{
// Replace the '.'
if (a[i,j] == '.' )
a[i,j] = ch;
// Toggle number
ch = (ch == '1' ) ? '0' : '1' ;
Console.Write( a[i,j] + " " );
}
Console.WriteLine();
// For each row, change
// the starting number
if (i % 2 == 0)
ch = '0' ;
else
ch = '1' ;
}
} // Driver code public static void Main (String[] args)
{ char [,]a = { { '.' , '_' },
{ '_' , '.' } };
Matrix(a);
} } // This code has been contributed by 29AjayKumar |
<script> // Javascript implementation of the approach const N = 2; const M = 2; // Function to generate and // print the required matrix function Matrix(a)
{ let ch = '1' ;
for (let i = 0; i < N; i++) {
for (let j = 0; j < M; j++) {
// Replace the '.'
if (a[i][j] == '.' )
a[i][j] = ch;
// Toggle number
ch = (ch == '1' ) ? '0' : '1' ;
document.write(a[i][j] + " " );
}
document.write( "<br>" );
// For each row, change
// the starting number
if (i % 2 == 0)
ch = '0' ;
else
ch = '1' ;
}
} // Driver code let a = [ [ '.' , '_' ],
[ '_' , '.' ] ];
Matrix(a);
</script> |
1 _ _ 1
Time Complexity : O(N*M)
Auxiliary Space: O(1)