Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 각 행과 열에 모든 모음이 포함되도록 N x M 행렬 인쇄


이 문제에서는 n X m 크기의 2D 행렬을 만들어야 합니다. 그리고 이 행렬에서는 각 행과 열에 모든 모음이 포함되도록 모음만 배치해야 합니다.

모든 모음은 행렬의 각 행과 각 열에 a, e, i, o, u가 모두 있음을 의미합니다. 이것은 필요한 행과 열의 최소 수를 5로 만듭니다. 즉, 가장 작은 행렬의 크기는 5X5입니다.

주제를 더 잘 이해하기 위해 예를 들어보겠습니다.

예시 1 -

Input : N = 5 and 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 o

설명 − 모음 a e i o u는 모든 행과 열에 순서대로 배열됩니다. aeiou가 있는 첫 번째 행 , 다음은 e가 eioua로 시작하고 다음은 ioua입니다. .

예시 2 -

Input : N = 3 M = 4
Output : Matrix cannot be created.

설명 - N과 M의 최소값은 5입니다.

이 문제를 해결하기 위해 먼저 5의 최소 요소 수를 조건으로 합니다. 즉, 입력 "행렬에 5보다 작은 값이 제공되면 생성할 수 없습니다 "가 인쇄됩니다. 그렇지 않으면 반복된 형태로 시퀀스 'eiou'를 인쇄합니다. 배열의 경우 ' eioua ', ' iouae '에서 왼쪽으로 한 단계 회전하여 인쇄할 순서를 변경합니다.

예시

#include <iostream>
using namespace std;
void vowelMatrix(int n, int m) {
   if (n<5||m<5) {
      cout<<"Marix cannot be created!";
      return;
   }
   string s = "aeiou";
   for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
         cout<<s[(j+i) % 5]<<" ";
      }
      cout << endl;
   }
}
int main(){
   int n = 5, m = 5;
   vowelMatrix(n, m);
   return 0;
}

출력

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