Et latinsk kvadrat er et n x n gitter fyldt med n forskellige tal, der hver optræder nøjagtigt én gang i hver række og kolonne. Givet et input n skal vi udskrive en n x n matrix bestående af tal fra 1 til n, der hver optræder nøjagtigt én gang i hver række og hver kolonne.
Eksempler:
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
Fandt du et mønster, hvor nummeret er gemt på en latinsk firkant?
- I første række gemmes tallene fra 1 til n i serie.
- I anden række flyttes tallene til højre med én kolonne. dvs. 1 er gemt i 2. kolonne nu og så videre.
- I tredje række flyttes tallene til højre med to kolonner. dvs. 1 er gemt i 3. kolonne nu og så videre.
- Vi fortsætter på samme måde for de resterende rækker.
Note : Der kan være mere end én mulig konfiguration af en n x n latinsk firkant.
Implementering:
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>
Produktion
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
Tidskompleksitet: O(n*n)
Hjælpeplads: O(1)