Grade 10 · Two-dimensional arrays (matrices)Citește în română
Generating a chessboard
Original: Generarea tablei de șah
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
Input
4
Expected output
1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1
Input
1
Expected output
1
The code
Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.
/*
* 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.