Grade 10 · Two-dimensional arrays (matrices)Citește în română

Generating a chessboard

Original: Generarea tablei de șah

O(n²)C++1744 lines2 examples

The idea

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.

Original description (Romanian)

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.

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

Examples

Example 1

Input

4

Expected output

1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Example 2

Input

1

Expected output

1

The code

Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.

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;
}

Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.