给定一个N * M矩阵mat [] [] ,它由两种类型的字符“。”组成。和‘_’ 。任务是在包含“。”的位置填充矩阵。与1和0 。填充矩阵,以使两个相邻的单元格都不包含相同的数字,并打印修改后的矩阵。
例子:
Input: mat[][] = {{‘.’, ‘_’}, {‘_’, ‘.’}}
Output:
1 _
_ 1
Input: mat[][] = {{‘_’, ‘_’}, {‘_’, ‘_’}}
Output:
_ _
_ _
There is no place to fill the numbers.
方法:一种有效的方法是按以下模式填充矩阵:
10101010…
01010101…
10101010…
遇到任何情况都跳过“ _”字符。
下面是上述方法的实现:
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
输出:
1 _
_ 1