Find a way to fill matrix with 1’s and 0’s in blank positions

31 May, 2022
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 _ _ 1Input: 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++
Java
Python3
C#
Javascript
// 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 matrixvoid 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 codeint main(){    char a[N][M] = { { '.', '_' },                     { '_', '.' } };     Matrix(a);     return 0;}
// Java implementation of the approachimport java.io.*; class GFG{ static int N = 2;static int M = 2; // Function to generate and// print the required matrixstatic 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 = 2M = 2 # Function to generate and# print the required matrixdef 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 codeif __name__ == "__main__" :     a = [            [ '.', '_' ],            [ '_', '.' ],        ]     Matrix(a);     # This code is contributed by AnkitRai01
// C# implementation of the approachusing System;     class GFG{ static int N = 2;static int M = 2; // Function to generate and// print the required matrixstatic 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 codepublic 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 matrixfunction 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)
vt_m
29AjayKumar
ankthon
souravmahato348
rishav1329
Competitive Programming
Mathematical
Matrix
Mathematical
Matrix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Modulo 10^9+7 (1000000007)
Prefix Sum Array - Implementation and Applications in Competitive Programming
Bits manipulation (Important tactics)
What is Competitive Programming and How to Prepare for It?
Bitwise Hacks for Competitive Programming
Program for Fibonacci numbers
Set in C++ Standard Template Library (STL)
Write a program to print all permutations of a given string
C++ Data Types
Merge two sorted arrays