En latinsk kvadrat är ett n x n rutnät fyllt av n distinkta siffror som var och en förekommer exakt en gång i varje rad och kolumn. Med en inmatning n måste vi skriva ut en n x n matris som består av siffror från 1 till n som var och en förekommer exakt en gång i varje rad och varje kolumn.
Exempel:
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
Hittade du något mönster där numret är lagrat på en latinsk fyrkant?
- I den första raden lagras numren från 1 till n i serie.
- I den andra raden flyttas siffrorna åt höger med en kolumn. dvs 1 lagras i 2:a kolumnen nu och så vidare.
- I den tredje raden flyttas siffrorna åt höger med två kolumner. dvs 1 lagras i 3:e kolumnen nu och så vidare.
- Vi fortsätter på samma sätt för de återstående raderna.
Notera : Det kan finnas mer än en möjlig konfiguration av en n x n latinsk kvadrat.
Genomförande:
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
Tidskomplexitet: O(n*n)
Hjälputrymme: O(1)