## Friday, November 11, 2016

### Latin Square - GeeksforGeeks

Latin Square - GeeksforGeeks
A Latin Square is a n x n grid filled by n distinct numbers each appearing exactly once in each row and column. Given an input n, we have to print a n x n matrix consisting of numbers from 1 to n each appearing exactly once in each row and each column.

• In the first row, the numbers are stored from 1 to n serially.
• the second row, the numbers are shifted to the right by one column. i.e, 1 is stored at 2nd column now and so on.
• In the third row, the numbers are shifted to the right by two columns. i.e, 1 is stored at 3rd column now and so on.
• We continue same way for remaining rows.
`void` `printLatin(``int` `n)`
`{`
`    ``// A variable to control the rotation`
`    ``// point.`
`    ``int` `k = n+1;`

`    ``// Loop to print rows`
`    ``for` `(``int` `i=1; i<=n; i++)`
`    ``{`
`        ``// This loops runs only after first`
`        ``// iteration of outer loop. It prints`
`        ``// numbers from n to k`
`        ``int` `temp = k;`
`        ``while` `(temp <= n)`
`        ``{`
`            ``printf``(``"%d "``, temp);`
`            ``temp++;`
`        ``}`

`        ``// This loop prints numbers from 1 to k-1.`
`        ``for` `(``int` `j=1; j<k; j++)`
`            ``printf``(``"%d "``, j);`

`        ``k--;`
`        ``printf``(``"\n"``);`
`    ``}`
`}`