इस समस्या में, हमें तीन चर n, s, और k दिए गए हैं और हमें उन सभी संभावित अनुक्रमों को प्रिंट करना है जो संख्या n और लंबाई s से शुरू होते हैं, जिसमें क्रमागत के बीच पूर्ण अंतर होता है k से कम तत्व।
आइए विषय को बेहतर ढंग से समझने के लिए एक उदाहरण लेते हैं -
Input: n = 3, s = 3 , k = 2 Output: 3 3 3 3 3 4 3 3 2 3 4 4 3 4 5 3 4 3 3 2 2 3 2 3 3 2 1
इस समस्या में, हमें k को घटाकर निरपेक्ष अंतर प्राप्त करने की आवश्यकता है। इसके लिए, हम एक अनुक्रम प्राप्त कर सकते हैं जिसमें ऐसे तत्व हैं जो सकारात्मक अंतर प्राप्त करने के लिए अधिक हैं और नकारात्मक अंतर प्राप्त करने के लिए कम हैं।
इसके लिए, हम n से शुरू करेंगे और प्रत्येक क्रमागत स्थिति में तत्वों को पुनरावर्ती कॉल करेंगे। 0 से k-1 तक एक लूप और इसे संख्या में संख्या में जोड़ें। इसी तरह नकारात्मक पक्ष के लिए भी जा रहे हैं।
उदाहरण
#include <bits/stdc++.h> using namespace std; void printConsicutiveNumbers(vector& v, int n, int s, int k){ if (s == 0) { for (int i = 0; i < v.size(); i++) cout<<v[i]<<" "; cout << endl; return; } for (int i = 0; i < k; i++) { v.push_back(n + i); printConsicutiveNumbers(v, n + i, s - 1, k); v.pop_back(); } for (int i = 1; i < k; i++) { v.push_back(n - i); printConsicutiveNumbers(v, n - i, s - 1, k); v.pop_back(); } } int main(){ int n = 3, s = 3, k = 2; cout<<"The sequence is :\n"; vector<int> v; v.push_back(n); printConsicutiveNumbers(v, n, s - 1, k); return 0; }
आउटपुट
क्रम है -
3 3 3 3 3 4 3 3 2 3 4 4 3 4 5 3 4 3 3 2 2 3 2 3 3 2 1