এই সমস্যায়, আমাদের তিনটি ভেরিয়েবল দেওয়া হয়েছে 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