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

Last Updated : 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 _
_ 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++

 `// C++ implementation of the approach` `#include ` `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

 `// 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

 `# 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#

 `// 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`

## Javascript

 ``

Output:

```1 _
_ 1```

Time Complexity : O(N*M)

Auxiliary Space: O(1)

Previous
Next