मान लीजिए कि हमारे पास एन सकारात्मक पूर्णांक के साथ एक सरणी है, और एक अन्य चर के है। हमें बिल्कुल एम-तत्वों को ढूंढना है, जैसे कि किन्हीं दो तत्वों के बीच का अंतर k के बराबर है। इसलिए यदि सरणी A =[4, 7, 10, 6, 9], और k =3 और m =3 है, तो आउटपुट "हाँ" होगा। जैसा कि हम 4, 7, 10 जैसे तीन तत्व पा सकते हैं।
इसे हल करने के लिए, हमें शेषफलों पर नज़र रखनी होगी, जब किसी तत्व को k से विभाजित किया जाता है। अब k आकार का एक बहु-आयामी सरणी रेम [] [] बनाएं, इसका सूचकांक शेष दिखा रहा है, और तत्व k से विभाजित होने पर उनके संबंधित शेष के अनुसार तत्व होंगे। अब शेष समुच्चय को पार करके, हम एक ऐसा समुच्चय प्राप्त कर सकते हैं जिसका आकार आवश्यक आकार m से बड़ा या उसके बराबर हो, यदि मौजूद हो। और उस समुच्चय के किसी भी अवयव का अंतर k से विभाज्य होगा।
उदाहरण
#include<iostream> #include<vector> using namespace std; void searchElementsSet(int arr[], int n, int k, int m) { vector<int> rem_matrix[k]; for (int i = 0; i < n; i++) { int rem = arr[i] % k; rem_matrix[rem].push_back(arr[i]); } for (int i = 0; i < k; i++) { if (rem_matrix[i].size() >= m) { cout << "Yes Possible"<<endl; for (int j = 0; j < m; j++) cout << rem_matrix[i][j] << " "; return; } } cout << "Impossible"; } int main() { int arr[] = {4, 7, 10, 6, 9}; int k = 3; int m = 3; int n = sizeof(arr) / sizeof(arr[0]); searchElementsSet(arr, n, k, m); }
आउटपुट
Yes Possible 4 7 10