المربع اللاتيني عبارة عن شبكة n x n مملوءة بـ n أرقام مميزة يظهر كل منها مرة واحدة بالضبط في كل صف وعمود. بالنظر إلى المدخلات n، يتعين علينا طباعة مصفوفة n x n تتكون من أرقام من 1 إلى n تظهر كل منها مرة واحدة بالضبط في كل صف وكل عمود.
أمثلة :
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
هل وجدت أي نمط يتم فيه تخزين الرقم في المربع اللاتيني؟
- في الصف الأول يتم تخزين الأرقام من 1 إلى n بشكل تسلسلي.
- في الصف الثاني يتم إزاحة الأرقام إلى اليمين بمقدار عمود واحد. أي يتم تخزين 1 في العمود الثاني الآن وهكذا.
- في الصف الثالث يتم إزاحة الأرقام إلى اليمين بواسطة عمودين. أي يتم تخزين 1 في العمود الثالث الآن وهكذا.
- نواصل بنفس الطريقة بالنسبة للصفوف المتبقية.
ملحوظة : قد يكون هناك أكثر من تكوين محتمل للمربع اللاتيني n x n.
تطبيق:
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>
الإخراج
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
تعقيد الوقت: يا (ن * ن)
المساحة المساعدة: يا(1)