Рубрики

Создайте матрицу с чередующимися прямоугольниками O и X

Напишите код, который вводит два числа m и n и создает матрицу размера mxn (m строк и n столбцов), в которой каждый элемент имеет значение X или 0. Xs и 0s должны быть заполнены поочередно, матрица должна иметь крайний прямоугольник Xs, затем прямоугольник 0s, затем прямоугольник Xs и так далее.

Примеры:

Input: m = 3, n = 3
Output: Following matrix 
X X X
X 0 X
X X X

Input: m = 4, n = 5
Output: Following matrix
X X X X X
X 0 0 0 X
X 0 0 0 X
X X X X X

Input:  m = 5, n = 5
Output: Following matrix
X X X X X
X 0 0 0 X
X 0 X 0 X
X 0 0 0 X
X X X X X

Input:  m = 6, n = 7
Output: Following matrix
X X X X X X X
X 0 0 0 0 0 X
X 0 X X X 0 X
X 0 X X X 0 X
X 0 0 0 0 0 X
X X X X X X X 

Мы настоятельно рекомендуем свернуть браузер и попробовать это в первую очередь.

Этот вопрос был задан при наборе в кампус Shreepartners Gurgaon. Я придерживался следующего подхода.

1) Используйте код для печати матрицы в форме спирали .
2) Вместо печати массива вставьте элемент «X» или «0» в качестве альтернативы в массив.

Ниже приводится реализация вышеуказанного подхода.

C ++

#include <stdio.h>

  
// Функция для печати чередующихся прямоугольников 0 и X

void fill0X(int m, int n)

{

    / * k - начальный индекс строки

        m - индекс конца строки

        l - начальный индекс столбца

        n - индекс конечного столбца

        я - итератор * /

    int i, k = 0, l = 0;

  

    // Сохраняем заданное количество строк и столбцов для последующего использования

    int r = m, c = n;

  

    // 2D массив для хранения вывода на печать

    char a[m][n];

    char x = 'X'; // Инициализируем символ, который будет сохранен в [] []

  

    // Заполняем символы в [] [] по спирали. Каждая итерация заполняет

    // один прямоугольник из X или Os

    while (k < m && l < n)

    {

        / * Заполнить первый ряд из оставшихся строк * /

        for (i = l; i < n; ++i)

            a[k][i] = x;

        k++;

  

        / * Заполнить последний столбец из оставшихся столбцов * /

        for (i = k; i < m; ++i)

            a[i][n-1] = x;

        n--;

  

        / * Заполнить последнюю строку из оставшихся строк * /

        if (k < m)

        {

            for (i = n-1; i >= l; --i)

                a[m-1][i] = x;

            m--;

        }

  

        / * Распечатать первый столбец из оставшихся столбцов * /

        if (l < n)

        {

            for (i = m-1; i >= k; --i)

                a[i][l] = x;

            l++;

        }

  

        // Перевернуть символ для следующей итерации

        x = (x == '0')? 'X': '0';

    }

  

    // Распечатать заполненную матрицу

    for (i = 0; i < r; i++)

    {

        for (int j = 0; j < c; j++)

            printf("%c ", a[i][j]);

        printf("\n");

    }

}

  
/ * Программа драйвера для проверки вышеуказанных функций * /

int main()

{

    puts("Output for m = 5, n = 6");

    fill0X(5, 6);

  

    puts("\nOutput for m = 4, n = 4");

    fill0X(4, 4);

  

    puts("\nOutput for m = 3, n = 4");

    fill0X(3, 4);

  

    return 0;

}

Джава

// Java-код для демонстрации работы.

  

import java.io.*;

  

class GFG {

  
// Функция для печати поочередно
// прямоугольники 0 и X

 static void fill0X(int m, int n)

{

    / * k - начальный индекс строки

        m - индекс конца строки

        l - начальный индекс столбца

        n - индекс конечного столбца

        я - итератор * /

    int i, k = 0, l = 0;

  

    // Сохраняем заданное количество строк

        // и столбцы для последующего использования

    int r = m, c = n;

  

    // 2D массив для хранения

        // вывод для печати

    char a[][] = new char[m][n];

  

        // Инициализируем персонажа

        // храниться в [] []

    char x = 'X'

  

    // Заполняем символы в [] [] по спирали

        // форма. Каждая итерация заполняет

    // один прямоугольник из X или Os

    while (k < m && l < n)

    {

        / * Заполнить первый ряд из оставшихся строк * /

        for (i = l; i < n; ++i)

            a[k][i] = x;

        k++;

  

        / * Заполнить последний столбец из оставшихся столбцов * /

        for (i = k; i < m; ++i)

            a[i][n-1] = x;

        n--;

  

        / * Заполнить последнюю строку из оставшихся строк * /

        if (k < m)

        {

            for (i = n-1; i >= l; --i)

                a[m-1][i] = x;

            m--;

        }

  

        / * Распечатать первый столбец

                // из оставшихся столбцов * /

        if (l < n)

        {

            for (i = m-1; i >= k; --i)

                a[i][l] = x;

            l++;

        }

  

        // Перевернуть символ для следующей итерации

        x = (x == '0')? 'X': '0';

    }

  

    // Распечатать заполненную матрицу

    for (i = 0; i < r; i++)

    {

        for (int j = 0; j < c; j++)

            System.out.print(a[i][j] + " ");

        System.out.println();

    }

}

  
/ * Программа драйвера для проверки вышеуказанных функций * /

public static void main (String[] args) {

  

    System.out.println("Output for m = 5, n = 6");

    fill0X(5, 6);

  

    System.out.println("Output for m = 4, n = 4");

    fill0X(4, 4);

  

    System.out.println("Output for m = 3, n = 4");

    fill0X(3, 4);

          

    }

}

  
// Этот код предоставлен vt_m

python3

# Python3 программа для создания матрицы с
# чередующиеся прямоугольники O и X

  
# Функция для pralternating прямоугольников
№ 0 и Х

def fill0X(m, n):

      

    # k - начальный индекс строки

    # m - индекс конца строки

    # l - начальный индекс столбца

    # n - индекс конца столбца

    # i - итератор

    i, k, l = 0, 0, 0

  

    # Хранить заданное количество строк и

    # столбцы для последующего использования

    r = m

    c =

  

    # 2D массив для хранения вывода

    # для печати

    a = [[None] * n for i in range(m)] 

    x = 'X' # Инициализировать персонажа в

            # быть украденным в [] []

  

    # Заполните символы в [] [] по спирали.

    # Каждая итерация заполняет один прямоугольник

    # Xs или Os

    while k < m and l < n:

          

        # Заполните первый ряд из

        # оставшиеся строки

        for i in range(l, n):

            a[k][i] =

        k += 1

  

        # Заполните последний столбец из

        # оставшиеся столбцы

        for i in range(k, m):

            a[i][n - 1] =

        n -= 1

  

        # Заполните последний ряд из

        # оставшиеся строки

        if k < m:

            for i in range(n - 1, l - 1, -1):

                a[m - 1][i] =

            m -= 1

  

        # Распечатать первый столбец из

        # оставшиеся столбцы

        if l < n:

            for i in range(m - 1, k - 1, -1):

                a[i][l] =

            l += 1

  

        # Flip символ для следующей итерации

        x = 'X' if x == '0' else '0'

  

    # Распечатать заполненную матрицу

    for i in range(r):

        for j in range(c):

            print(a[i][j], end = " ")

        print()

  
Код водителя

if __name__ == '__main__':

      

    print("Output for m = 5, n = 6"

    fill0X(5, 6

  

    print("Output for m = 4, n = 4"

    fill0X(4, 4

  

    print("Output for m = 3, n = 4"

    fill0X(3, 4)

      
# Этот код предоставлен pranchalK

C #

// C # код для демонстрации работы.

using System;

  

class GFG {

  

    // Функция для печати поочередно

    // прямоугольники 0 и X

    static void fill0X(int m, int n)

    {

          

        / * k - начальный индекс строки

        m - индекс конца строки

        l - начальный индекс столбца

        n - индекс конечного столбца

        я - итератор * /

        int i, k = 0, l = 0;

      

        // Сохраняем заданное количество строк

        // и столбцы для последующего использования

        int r = m, c = n;

      

        // 2D массив для хранения

        // вывод для печати

        char [,]a = new char[m,n];

      

        // Инициализируем персонажа

        // храниться в [] []

        char x = 'X'

      

        // Заполняем символы в [] [] по спирали

        // форма. Каждая итерация заполняет

        // один прямоугольник из X или Os

        while (k < m && l < n)

        {

              

            / * Заполните первый ряд из

            оставшиеся строки * /

            for (i = l; i < n; ++i)

                a[k,i] = x;

            k++;

      

            / * Заполните последний столбец из

            остальные столбцы * /

            for (i = k; i < m; ++i)

                a[i,n-1] = x;

            n--;

      

            / * Заполните последний ряд из

            оставшиеся строки * /

            if (k < m)

            {

                for (i = n-1; i >= l; --i)

                    a[m-1,i] = x;

                m--;

            }

      

            / * Распечатать первый столбец

            из оставшихся столбцов * /

            if (l < n)

            {

                for (i = m-1; i >= k; --i)

                    a[i,l] = x;

                l++;

            }

      

            // Перевернуть символ для следующего

            // итерация

            x = (x == '0')? 'X': '0';

        }

      

        // Распечатать заполненную матрицу

        for (i = 0; i < r; i++)

        {

            for (int j = 0; j < c; j++)

                Console.Write(a[i,j] + " ");

            Console.WriteLine();

        }

    }

      

    / * Программа для тестирования драйверов

    вышеуказанные функции * /

    public static void Main ()

    {

        Console.WriteLine("Output for"

                    + " m = 5, n = 6");

        fill0X(5, 6);

      

        Console.WriteLine("Output for"

                    + " m = 4, n = 4");

        fill0X(4, 4);

      

        Console.WriteLine("Output for"

                    + " m = 3, n = 4");

        fill0X(3, 4);

    }

}

  
// Этот код предоставлен Sam007.

PHP

<?php
// PHP программа для создания матрицы с
// чередующиеся прямоугольники O и X

  
// Функция для печати поочередно
// прямоугольники 0 и X

function fill0X($m, $n)

{

      

    / * k - начальный индекс строки

        m - индекс конца строки

        l - начальный индекс столбца

        n - индекс конечного столбца

        я - итератор * /

    $k = 0;

    $l = 0;

  

    // Сохраняем заданное количество строк

    // и столбцы для последующего использования

    $r = $m

    $c = $n;

  

    // 2D массив для хранения

    // вывод для печати

    // Инициализируем персонажа

    // храниться в [] []

    $x = 'X'

  

    // Заполняем символы в [] [] в

    // спиральная форма. Каждая итерация заполняет

    // один прямоугольник из X или Os

    while ($k < $m && $l < $n)

    {

          

        / * Заполните первый ряд из

           остальные строки * /

        for ($i = $l; $i < $n; ++$i)

            $a[$k][$i] = $x;

        $k++;

  

        / * Заполнить последний столбец из

           остальные столбцы * /

        for ($i = $k; $i < $m; ++$i)

            $a[$i][$n - 1] = $x;

        $n--;

  

        / * Заполните последний ряд из

           остальные строки * /

        if ($k < $m)

        {

            for ($i = $n - 1; $i >= $l; --$i)

                $a[$m - 1][$i] = $x;

            $m--;

        }

  

        / * Вывести первый столбец из

           остальные столбцы * /

        if ($l < $n)

        {

            for ($i = $m - 1; $i >= $k; --$i)

                $a[$i][$l] = $x;

            $l++;

        }

  

        // Отразить символ для

        // следующая итерация

        $x = ($x == '0')? 'X': '0';

    }

  

    // Распечатать заполненную матрицу

    for ($i = 0; $i < $r; $i++)

    {

        for ($j = 0; $j < $c; $j++)

            echo($a[$i][$j]." ");

        echo "\n";

    }

}

  
// Код драйвера

echo "Output for m = 5, n = 6\n";

fill0X(5, 6);

  

echo "\nOutput for m = 4, n = 4\n";

fill0X(4, 4);

  

echo "\nOutput for m = 3, n = 4\n";

fill0X(3, 4);

  
// Этот код предоставлен ChitraNayal.
?>


Выход:

Output for m = 5, n = 6
X X X X X X
X 0 0 0 0 X
X 0 X X 0 X
X 0 0 0 0 X
X X X X X X

Output for m = 4, n = 4
X X X X
X 0 0 X
X 0 0 X
X X X X

Output for m = 3, n = 4
X X X X
X 0 0 X
X X X X 

Сложность времени: O (мн)
Вспомогательное пространство: O (млн)

Пожалуйста, предложите, если у кого-то есть лучшее решение, которое является более эффективным с точки зрения пространства и времени.

Эта статья предоставлена Дипаком Биштом . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Создайте матрицу с чередующимися прямоугольниками O и X

0.00 (0%) 0 votes