Kwadrat łaciński to siatka n x n wypełniona n różnymi liczbami, z których każda pojawia się dokładnie raz w każdym rzędzie i kolumnie. Mając dane wejściowe n, musimy wydrukować macierz n x n składającą się z liczb od 1 do n, z których każda pojawia się dokładnie raz w każdym wierszu i każdej kolumnie.
Przykłady:
Input: 3 Output: 1 2 3 3 1 2 2 3 1 Input: 5 Output: 1 2 3 4 5 5 1 2 3 4 4 5 1 2 3 3 4 5 1 2 2 3 4 5 1
Czy znalazłeś jakiś wzór, w którym liczba jest przechowywana w kwadracie łacińskim?
- W pierwszym wierszu zapisywane są liczby od 1 do n w kolejności.
- W drugim rzędzie liczby są przesunięte w prawo o jedną kolumnę. tj. 1 jest teraz przechowywany w drugiej kolumnie i tak dalej.
- W trzecim rzędzie liczby są przesunięte w prawo o dwie kolumny. tj. 1 jest teraz przechowywany w trzeciej kolumnie i tak dalej.
- W ten sam sposób postępujemy z pozostałymi rzędami.
Notatka : Może istnieć więcej niż jedna możliwa konfiguracja kwadratu łacińskiego n x n.
Realizacja:
C++// C++ program to print Latin Square #include using namespace std; // Function to print n x n Latin Square 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) { cout << temp << ' '; temp++; } // This loop prints numbers from 1 to k-1. for (int j=1; j<k; j++) cout << j << ' '; k--; cout << endl; } } // Driver program to test above function int main(void) { int n = 5; // Invoking printLatin function printLatin(n); return 0; } // This code is contributed by kothavvsaakash.
C // C program to print Latin Square #include // Function to print n x n Latin Square 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'); } } // Driver program to test above function int main(void) { int n = 5; // Invoking printLatin function printLatin(n); return 0; }
Java // Java program to print Latin Square class GFG { // Function to print n x n Latin Square static 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) { System.out.print(temp + ' '); temp++; } // This loop prints numbers from // 1 to k-1. for (int j = 1; j < k; j++) System.out.print(j + ' '); k--; System.out.println(); } } // Driver code public static void main (String[] args) { int n = 5; // Invoking printLatin function printLatin(n); } } // This code is contributed by Anant Agarwal.
Python 3 # Python 3 program to print Latin Square # Function to print n x n Latin Square def printLatin(n): # A variable to control the # rotation point. k = n + 1 # Loop to print rows for i in range(1 n + 1 1): # This loops runs only after first # iteration of outer loop. It prints # numbers from n to k temp = k while (temp <= n) : print(temp end = ' ') temp += 1 # This loop prints numbers # from 1 to k-1. for j in range(1 k): print(j end = ' ') k -= 1 print() # Driver Code n = 5 # Invoking printLatin function printLatin(n) # This code is contributed by R_Raj
C# // C# program to print Latin Square using System; class GFG { // Function to print n x n // Latin Square static 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) { Console.Write(temp + ' '); temp++; } // This loop prints numbers from // 1 to k-1. for (int j = 1; j < k; j++) Console.Write(j + ' '); k--; Console.WriteLine(); } } // Driver code public static void Main () { int n = 5; // Invoking printLatin function printLatin(n); } } // This code is contributed by KRV.
PHP // PHP program to print Latin Square // Function to print n x n Latin Square function printLatin( $n) { // A variable to control // the rotation point. $k = $n + 1; // Loop to print rows for ( $i = 1; $i <= $n; $i++) { // This loops runs only after // first iteration of outer loop. // It prints numbers from n to k $temp = $k; while ($temp <= $n) { echo $temp' '; $temp++; } // This loop prints numbers // from 1 to k-1. for ($j = 1; $j < $k; $j++) echo $j ' '; $k--; echo 'n'; } } // Driver Code $n = 5; // Invoking printLatin function printLatin($n); // This code is contributed by anuj_67. ?> JavaScript <script> // Javascript program to print Latin Square // Function to print n x n // Latin Square function printLatin(n) { // A variable to control the // rotation point. let k = n + 1; // Loop to print rows for (let i = 1; i <= n; i++) { // This loops runs only after // first iteration of outer // loop. It prints numbers // from n to k let temp = k; while (temp <= n) { document.write(temp + ' '); temp++; } // This loop prints numbers from // 1 to k-1. for (let j = 1; j < k; j++) document.write(j + ' '); k--; document.write(''); } } let n = 5; // Invoking printLatin function printLatin(n); </script>
Wyjście
1 2 3 4 5 5 1 2 3 4 4 5 1 2 3 3 4 5 1 2 2 3 4 5 1
Złożoność czasowa: O(n*n)
Przestrzeń pomocnicza: O(1)