Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์ลำดับความยาวที่เพิ่มขึ้นทั้งหมด k จากจำนวนธรรมชาติ n ตัวแรกใน C++


ในปัญหานี้ เราจะให้จำนวนเต็ม K และ n สองจำนวน งานของเราคือพิมพ์ลำดับความยาว K ที่เพิ่มขึ้นทั้งหมดโดยใช้จำนวนธรรมชาติ n ตัวแรก

ลำดับที่เพิ่มขึ้น คือลำดับของตัวเลขที่มีค่าขององค์ประกอบถัดไปมากกว่าค่าก่อนหน้า

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน −

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