इस समस्या में, हमें n तत्वों की एक सरणी दी गई है। हमारा काम केवल तत्वों का उपयोग करके एक सरणी को बराबर करने के लिए संचालन की संख्या की गणना करने के लिए एक प्रोग्राम बनाना है।
हमें सरणी के सभी तत्वों को समान बनाने के लिए किए जाने वाले जोड़ या घटाव संचालन की संख्या की गणना करने की आवश्यकता है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: गिरफ्तारी [] ={4, 0, 3, 1, 2}
आउटपुट: 3पी>
स्पष्टीकरण:
बराबर मान 2 होगा।
कुल योग समान होगा। हम arr[3] पर मान से 1 लेंगे और फिर इसे arr[1] पर मान में जोड़ेंगे।
फिर हम arr[0] पर मान से 2 लेंगे और इसे arr[1] पर मान में जोड़ देंगे।
समाधान दृष्टिकोण:
समस्या का एक सरल समाधान यह है कि सरणी से तत्व को उन तत्वों के रूप में खोजा जाए जो सरणी के लिए समान तत्व होंगे।
हम जांच करेंगे कि क्या औसत का पता लगाकर ऑपरेशन संभव है, अगर यह पूर्णांक है तो समीकरण संभव है अन्यथा नहीं।
यदि समीकरण संभव है, तो हम आवश्यक संचालन की संख्या की गणना करेंगे और फिर इसे वापस कर देंगे। ऑपरेशन की संख्या औसत के साथ सभी संख्याओं के पूर्ण अंतर के योग के आधे के बराबर है।
एल्गोरिदम:
चरण 1: सरणी के सभी तत्वों का औसत ज्ञात कीजिए।
चरण 2: यदि औसत एक पूर्णांक नहीं है, तो वापसी -1, यह दर्शाता है कि समीकरण संभव नहीं है।
चरण 3: अन्यथा, सभी तत्वों और औसत के बीच पूर्ण अंतर ज्ञात कीजिए।
चरण 4: औसत मूल्य का आधा लौटाएं।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <bits/stdc++.h> using namespace std; int calcEqualisedOperations(int arr[], int n) { int sum = 0, average, operations = 0; for (int i = 0; i < n; i++) sum += arr[i]; if (sum % n != 0) return -1; average = sum/n; for (int i = 0; i < n; i++) operations += ( abs(arr[i] - average) / 2 ); return operations; } int main() { int arr[] = { 5, 3, 2, 6 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"Operations required to equalize an array using array elements is "<<calcEqualisedOperations(arr, n); return 0; }
आउटपुट -
Operations required to equalize an array using array elements is 2