ในปัญหานี้ เราจะให้จำนวนเต็ม 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