Latin square P91748


Statement
 

pdf   zip   main.cc

A latin square of order nn is a matrix n×nn \times n such that in each row and column appears all the numbers between 1 and nn. For instance, (231123312)and(1234214334124321)\left( \begin{array}{ccc} 2 & 3 & 1 \\ 1 & 2 & 3 \\ 3 & 1 & 2 \\ \end{array} \right) \qquad \mbox{and} \qquad \left( \begin{array}{cccc} 1 & 2 & 3 & 4 \\ 2 & 1 & 4 & 3 \\ 3 & 4 & 1 & 2 \\ 4 & 3 & 2 & 1 \\ \end{array} \right) are respectively latin squares of order 3 and 4.

Using the declarations

    typedef vector<int> Row;
    typedef vector<Row> Square;

write a function

    bool is_latin(const Square& q);

that prints if |q| is a latin square or not.

Precondition

|q| is not empty and really squared. All its numbers are natural.

Observation

You only need to submit the required procedure; your main program will be ignored.

Information
Author
Salvador Roura
Language
English
Translator
Carlos Molina
Original language
Catalan
Other languages
Catalan
Official solutions
C++
User solutions
C++