Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

पता लगाएं कि सरणी में कोई तत्व है जिसका मान सी ++ में सरणी योग का आधा है

इस समस्या में, हमें क्रमबद्ध अद्वितीय मानों की एक सरणी गिरफ्तारी दी जाती है। हमारा कार्य यह पता लगाना है कि क्या सरणी में कोई तत्व है जिसका मान सरणी योग का आधा है .

समस्या का विवरण: एरे एआर [] के लिए, हमें ऐरे में एलिमेंट x को इस तरह ढूंढना होगा कि एरे के सभी एलिमेंट्स का योग 2*X के बराबर हो।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट: गिरफ्तारी [] ={2, 4, 5, 6, 7}

आउटपुट: नहीं

स्पष्टीकरण:

योग =2 + 4 + 5 + 6 + 7 =24

कोई तत्व नहीं मिला।

समाधान दृष्टिकोण:

समस्या को हल करने के लिए, हमें केवल उन तत्वों को खोजने की आवश्यकता है जो सरणी के सभी तत्वों के योग का आधा है।

एल्गोरिदम:

चरण 1: सरणी के सभी तत्वों का योग ज्ञात कीजिए।

चरण 2: यदि योग मान विषम है, तो -1 लौटाएं।

चरण 3: यदि योग मान सम है, तो तत्व x को इस प्रकार ज्ञात कीजिए कि x*2 =योग।

चरण 4: यदि तत्व मिला, तो वापसी 1.
चरण 5: अगर तत्व नहीं मिला तो वापसी -1।

तत्व को खोजने के लिए, हम बाइनरी सर्च एल्गोरिथम . का उपयोग कर सकते हैं जैसा कि इसे क्रमबद्ध किया गया है।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

#include <iostream>
using namespace std;

int checkForElement(int array[], int n) {

   int arrSum = 0;
   for (int i = 0; i < n; i++)
      arrSum += array[i];

   if (arrSum % 2)
   return -1;

   int start = 0;
   int end = n - 1;
   while (start <= end)
   {
      int mid = start + (end - start) / 2;
      if ( ( 2 * array[mid] ) == arrSum)
         return array[mid];      
      else if (( 2 * array[mid] ) > arrSum)
         end = mid - 1;      
      else
         start = mid + 1;
   }

   return -1;
}

int main() {

   int array[] = { 4, 5, 6, 7, 9 };
   int n = sizeof(array) / sizeof(array[0]);
   int x = checkForElement(array, n);
   if(x != -1)
    cout<<"Element found, value is "<<x;
   else
    cout<<"Element not found!";
   return 0;
}

आउटपुट -

Element not found!

  1. सरणी में एक तत्व खोजें जैसे कि बाएँ सरणी का योग c ++ का उपयोग करके दाएँ सरणी के योग के बराबर हो

    मान लीजिए कि हमारे पास एक सरणी ए है, इसमें एन तत्व हैं। हमारा कार्य सरणी A को दो उप-सरणी में विभाजित करना है, ताकि प्रत्येक उप-सरणी का योग समान हो। मान लीजिए कि सरणी A =[2, 3, 4, 1, 4, 5], आउटपुट 1 है, इसलिए 1 से पहले और 1 के बाद के उप-सरणी लिए जाते हैं। [2, 3, 4], और [4, 5]। इस समस्या को हल करने क

  1. सी ++ में सरणी में प्रत्येक तत्व की सर्पासर गणना खोजें

    मान लीजिए कि एक सरणी A दिया गया है। हमें उस सरणी में प्रत्येक तत्व की संख्या को पार करना होगा। पार करने वाले अधिक से अधिक तत्व होते हैं जो वर्तमान तत्व की सरणी के दाईं ओर मौजूद होते हैं। मान लीजिए A ={2, 7, 5, 3, 0, 8, 1}, श्रेष्ठ हैं {4, 1, 1, 2, 0, 0}, तो 2 में दायीं ओर 4 संख्याएँ हैं, जो बड़ी हैं

  1. सी ++ में एक सम ऐरे पहेली?

    यहां हम सरणी से संबंधित एक दिलचस्प समस्या देखेंगे। n तत्वों के साथ एक सरणी है। हमें n तत्वों की एक और सरणी बनानी है। लेकिन दूसरी सरणी की i-वें स्थिति i-वें तत्व को छोड़कर पहले सरणी के सभी तत्वों का योग धारण करेगी। और एक बाधा यह है कि हम इस समस्या में घटाव ऑपरेटर का उपयोग नहीं कर सकते हैं। यदि हम घट