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

C++ में अनुमत दोहराव वाले सरणी तत्वों का उपयोग करके N को योग करने के तरीके

इस समस्या में, हमें पूर्णांकों की एक सरणी और एक संख्या N दी जाती है। हमारा कार्य सरणी के तत्वों को जोड़कर N को उत्पन्न करने के तरीकों की कुल संख्या की गणना करना है। सभी संयोजनों और दोहराव की अनुमति है।

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

इनपुट

arr = {1, 3, 5} N = 6

आउटपुट

8

स्पष्टीकरण

तरीके हैं -

5+1, 1+5, 3+3, 3+1+1+1, 1+3+1+1, 1+1+3+1, 1+1+1+3, 1+1+1+1+1+1

इस समस्या को हल करने के लिए, हमें एक अलग दृष्टिकोण का उपयोग करने की आवश्यकता है क्योंकि सभी प्रकार के संयोजनों का अलग-अलग व्यवहार किया जाएगा, यदि संख्या सरणी के 4 तत्वों का योग है तो 4 अलग-अलग तरीकों पर विचार किया जाता है (जैसा कि उदाहरण में दिखाया गया है)। ऐसी समस्या को हल करने के लिए, हमें गतिशील प्रोग्रामिंग दृष्टिकोण का उपयोग करने की आवश्यकता है और नीचे दिया गया प्रोग्राम कार्यान्वयन दिखाएगा।

उदाहरण

#include <iostream>
#include <cstring>
using namespace std;
int arraySumWays(int array[], int size, int N){
   int count[N + 1];
   memset(count, 0, sizeof(count));
   count[0] = 1;
   for (int i = 1; i <= N; i++)
      for (int j = 0; j < size; j++)
         if (i >= array[j])
            count[i] += count[i - array[j]];
   return count[N];
}
int main() {
   int array[] = {1, 5, 6};
   int size = sizeof(array) / sizeof(array[0]);
   int N = 7;
   cout<<"Total number of ways inwhich "<<N<<" can be generated using sum of elements of array is "      <<arraySumWays(array, size, N);
   return 0;
}

आउटपुट

Total number of ways inwhich 7 can be generated using sum of elements of array is 6

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

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

  1. सी ++ प्रोग्राम हीप सॉर्ट एल्गोरिथम का उपयोग करके 10 तत्वों की एक सरणी को सॉर्ट करने के लिए

    हीप सॉर्ट बाइनरी हीप डेटा संरचना पर आधारित है। बाइनरी हीप में पैरेंट नोड के चाइल्ड नोड्स अधिकतम हीप के मामले में उससे छोटे या उसके बराबर होते हैं, और पैरेंट नोड के चाइल्ड नोड्स मिन हीप के मामले में उससे बड़े या उसके बराबर होते हैं। हीप सॉर्ट में सभी चरणों की व्याख्या करने वाला एक उदाहरण इस प्रकार ह

  1. सी ++ प्रोग्राम पॉइंटर का उपयोग करके एक ऐरे के तत्वों तक पहुंचने के लिए

    पॉइंटर्स मेमोरी लोकेशन या वेरिएबल्स के एड्रेस को स्टोर करते हैं। दूसरे शब्दों में, पॉइंटर्स एक मेमोरी लोकेशन को रेफर करते हैं और उस मेमोरी लोकेशन पर स्टोर किए गए वैल्यू को प्राप्त करना पॉइंटर को डीरेफ्रेंसिंग के रूप में जाना जाता है। एक प्रोग्राम जो किसी सरणी के एक तत्व तक पहुँचने के लिए पॉइंटर्स क