Given two integers N and M, the task is to print an N x M matrix such that each row and column contain all the vowels in it. If it is impossible to do so, then print -1.
Examples:
Input: N = 5, M = 5
Output:
a e i o u
e i o u a
i o u a e
o u a e i
u a e i oInput: N = 6, M = 2
Output: -1
Approach: Since the number of vowels is 5, hence we need a minimum of 5 rows and 5 columns in order to generate a valid matrix. A pattern can be followed by filling “aeiouaeiou..” in the first row, “eiouaeio..” in the second row, and so on and the generated matrix will contain all the vowels in every row and column.
Below is the implementation of the above approach:
C++
| // C++ implementation of the approach#include <bits/stdc++.h>usingnamespacestd;// Function to print the required matrixvoidprintMatrix(intn, intm){    // Impossible to generate    // the required matrix    if(n < 5 || m < 5) {        cout << -1;        return;    }    // Store all the vowels    string s = "aeiou";    // Print the matrix    for(inti = 0; i < n; i++) {        // Print vowels for every index        for(intj = 0; j < m; j++) {            cout << s[j % 5] << " ";        }        cout << endl;        charc = s[0];        // Shift the vowels by one        for(inti = 0; i < 4; i++) {            s[i] = s[i + 1];        }        s[4] = c;    }}// Driver codeintmain(){    intn = 5, m = 5;    printMatrix(n, m);    return0;} | 
Java
| // Java implementation of the approachimportjava.io.*;publicclassGFG {// Function to print the required matrixstaticvoidprintMatrix(intn, intm){    // Impossible to generate    // the required matrix    if(n < 5|| m < 5)     {        System.out.print(-1);        return;    }    // Store all the vowels    char[] s = "aeiou".toCharArray();    // Print the matrix    for(inti = 0; i < n; i++)     {        // Print vowels for every index        for(intj = 0; j < m; j++)         {            System.out.print(s[j % 5] + " ");        }        System.out.println();        charc = s[0];        // Shift the vowels by one        for(intk = 0; k < 4; k++)         {            s[k] = s[k + 1];        }        s[4] = c;    }}// Driver codepublicstaticvoidmain(String[] args) {    intn = 5, m = 5;    printMatrix(n, m);}}// This code has been contributed by 29AjayKumar | 
Python3
| # Python3 implementation of the approach # Function to print the required matrix defprintMatrix(n, m) :     # Impossible to generate     # the required matrix     if(n < 5orm < 5) :         print(-1,end =" ");         return;         # Store all the vowels     s ="aeiou";     s =list(s);    # Print the matrix     fori inrange(n) :                # Print vowels for every index         forj inrange(m) :            print(s[j %5],end=" ");             print()         c =s[0];         # Shift the vowels by one         fori inrange(4) :            s[i] =s[i +1];                 s[4] =c; # Driver code if__name__ =="__main__":     n =5; m =5;     printMatrix(n, m); # This code is contributed by AnkitRai01 | 
C#
| // C# implementation of the approachusingSystem;classGFG { // Function to print the required matrix staticvoidprintMatrix(intn, intm) {     // Impossible to generate     // the required matrix     if(n < 5 || m < 5)     {         Console.Write(-1);         return;     }     // Store all the vowels     char[] s = "aeiou".ToCharArray();     // Print the matrix     for(inti = 0; i < n; i++)     {         // Print vowels for every index         for(intj = 0; j < m; j++)         {             Console.Write(s[j % 5] + " ");         }         Console.WriteLine();         charc = s[0];         // Shift the vowels by one         for(intk = 0; k < 4; k++)         {             s[k] = s[k + 1];         }         s[4] = c;     } } // Driver code publicstaticvoidMain(String[] args) {     intn = 5, m = 5;     printMatrix(n, m); } } /* This code contributed by PrinciRaj1992 */ | 
PHP
| <?php // PHP implementation of the approach// Function to print the required matrixfunctionprintMatrix($n, $m){    // Impossible to generate    // the required matrix    if($n< 5 || $m< 5)     {        echo-1;        return;    }    // Store all the vowels    $s= "aeiou";    // Print the matrix    for($i= 0; $i< $n; $i++)     {        // Print vowels for every index        for($j= 0; $j< $m; $j++)         {            echo$s[$j% 5] . " ";        }        echo"\n";        $c= $s[0];        // Shift the vowels by one        for($k= 0; $k< 4; $k++)         {            $s[$k] = $s[$k+ 1];        }        $s[4] = $c;    }}// Driver code    $n= 5;    $m= 5;    printMatrix($n, $m);    return0;    // This code is contributed by ChitraNayal    ?> | 
Javascript
| <script>// JavaScript implementation of the approach    // Function to print the required matrix    functionprintMatrix(n , m) {        // Impossible to generate        // the required matrix        if(n < 5 || m < 5) {            document.write(-1);            return;        }        // Store all the vowels        vars = "aeiou";        // Print the matrix        for(vari = 0; i < n; i++) {            // Print vowels for every index            for(j = 0; j < m; j++) {                document.write(s[j % 5] + " ");            }            document.write("<br/>");            varc = s[0];                s = s.substring(1,s.length)+s.substring(0,1);                    s[4] = c;        }    }    // Driver code            varn = 5, m = 5;        printMatrix(n, m);        // This code contributed by Rajput-Ji </script> | 
a e i o u e i o u a i o u a e o u a e i u a e i o
Time Complexity: O(N*M), as we are using nested loops to traverse N*M times.
Auxiliary Space: O(1) as we are not using any extra space.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!


 
                                    







