Computer >> Máy Tính >  >> Lập trình >> C ++

In tất cả các dãy tăng dần độ dài k từ n số tự nhiên đầu tiên trong C ++


Trong bài toán này, chúng ta cho hai số nguyên K và n. Nhiệm vụ của chúng ta là in tất cả các dãy số có độ dài K tăng dần bằng n số tự nhiên đầu tiên.

Trình tự tăng dần là một dãy số trong đó giá trị của phần tử tiếp theo lớn hơn giá trị của phần tử trước.

Hãy lấy một ví dụ để hiểu vấn đề -

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

Để giải quyết vấn đề này, chúng ta sẽ tạo một mảng độ dài k để lưu trữ trình tự hiện tại của mảng. Và đối với mọi vị trí trong mảng, chúng ta sẽ kiểm tra phần tử trước đó và chọn các phần tử tiếp theo lớn hơn phần trước đó. Chúng tôi sẽ từng người một cố gắng sửa tất cả các giá trị từ 1 đến n.

Ví dụ

Chương trình minh họa logic trê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;
}

Đầu ra

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