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

C++에서 처음 n개의 자연수에서 길이가 k인 증가하는 모든 시퀀스를 인쇄합니다.


이 문제에서 두 개의 정수 K와 n이 주어졌습니다. 우리의 임무는 처음 n개의 자연수를 사용하여 길이 K의 증가하는 모든 시퀀스를 인쇄하는 것입니다.

증가하는 순서 다음 요소의 값이 이전 요소보다 큰 일련의 숫자입니다.

문제를 이해하기 위해 예를 들어 보겠습니다 -

Input: n = 4, K = 2
Output:
1 2
1 3
1 4
2 3
2 4
3 4

이 문제를 해결하기 위해 배열의 현재 시퀀스를 저장하는 k 길이 배열을 만듭니다. 그리고 배열의 모든 위치에 대해 이전 요소를 확인하고 이전 요소보다 큰 다음 요소를 선택합니다. 1에서 n까지의 모든 값을 하나씩 수정하려고 합니다.

예시

위의 논리를 설명하는 프로그램 -

#include<iostream>
using namespace std;
void printSequence(int arr[], int k) {
   for (int i=0; i<k; i++)
      cout<<arr[i]<<" ";
   cout<<endl;
}
void printKLengthSequence(int n, int k, int &len, int arr[]) {
   if (len == k) {
      printSequence(arr, k);
      return;
   }
   int i = (len == 0)? 1 : arr[len-1] + 1;
   len++;
   while (i<=n) {
      arr[len-1] = i;
      printKLengthSequence(n, k, len, arr);
      i++;
   }
   len--;
}
void generateSequence(int n, int k) {
   int arr[k];
   int len = 0;
   printKLengthSequence(n, k, len, arr);
}
int main() {
   int k = 3, n = 4;
   cout<<"Sequence of length "<<k<<" generated using first "<<n<<" natural numbers :\n";
   generateSequence(n, k);
   return 0;
}

출력

A sequence of length 3 generated using first 4 natural numbers −
1 2 3
1 2 4
1 3 4
2 3 4