Clasa a X-a · Tablouri bidimensionale (matrice)Read in English

Generarea tablei de șah în C++

În engleză: Generating a chessboard

O(n²)C++1744 de linii2 exemple

Ideea

Pe o tablă de șah, culoarea pătratului depinde doar de paritatea sumei i + j: pătratele cu i + j par au o culoare (1), cele cu i + j impar cealaltă culoare (0). Astfel, colțul a[1][1] este 1 și oricare două pătrate vecine (pe linie sau pe coloană) au valori diferite.

Descrierea în engleză

On a chessboard, the colour of a square depends only on the parity of i + j: squares with an even i + j have one colour (1), those with an odd i + j the other (0). So the corner a[1][1] is 1 and any two neighbouring squares (on a row or a column) have different values.

Complexitate
O(n * n)
Clasa
Clasa a X-a (Grade 10)

Exemple

Exemplul 1

Intrare

4

Ieșire așteptată

1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Exemplul 2

Intrare

1

Ieșire așteptată

1

Codul C++

Codul complet, cu comentarii în română. Îl poți modifica liber și îl poți reseta oricând.

tabla-de-sah.cpp
/*
 * Titlu: Generarea tablei de șah
 * Clasa: 10
 * Capitol: Tablouri bidimensionale (matrice)
 * Descriere: Pe o tablă de șah, culoarea pătratului depinde doar de paritatea
 *            sumei i + j: pătratele cu i + j par au o culoare (1), cele cu i + j
 *            impar cealaltă culoare (0). Astfel, colțul a[1][1] este 1 și oricare
 *            două pătrate vecine (pe linie sau pe coloană) au valori diferite.
 * Complexitate: O(n * n)
 *
 * Exemplu
 * Intrare: 4
 * Ieșire:
 * 1 0 1 0
 * 0 1 0 1
 * 1 0 1 0
 * 0 1 0 1
 *
 * Exemplu
 * Intrare: 1
 * Ieșire: 1
 */
#include <iostream>
using namespace std;

int a[101][101];

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            a[i][j] = ((i + j) % 2 == 0) ? 1 : 0;

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
            cout << a[i][j] << ' ';
        cout << '\n';
    }
    return 0;
}

Rulează pe un g++ adevărat (C++17, -O2) prin Compiler Explorer. Programele trebuie să se termine repede: există o limită de timp.