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

स्वयं से छोटी संख्याओं के योग के रूप में किसी संख्या को लिखने के तरीकों की संख्या ज्ञात करने के लिए C++ प्रोग्राम

इस कार्यक्रम में हम उन तरीकों की संख्या गिनेंगे जिनके द्वारा एक संख्या को स्वयं से छोटी संख्याओं के योग द्वारा निरूपित किया जा सकता है। यह प्रोग्राम दिए गए नंबरों के विभाजन की गणना करेगा। हम इनपुट के रूप में एक नंबर n लेते हैं, फिर एक नंबर से शुरू करते हुए एक बार में 1 को हटाकर इसे तोड़ते हैं। यदि नया विभाजन उत्पन्न होता है, तो काउंटर बढ़ाएँ।

एल्गोरिदम

विभाजनगणना(n)

इनपुट :संख्या n

आउटपुट :विभाजनों की संख्या

Begin
   Create array p of size n
   k := 0
   count := -1
   put n as the first element of array p
   Repeat the following steps, do
   increase count by 1
   rem := 0
   while k >= 0 and p[k] = 1, do
      rem := rem + p[k]
      decrease k by 1
   done
   if k < 0, then
      return count
      p[k] := p[k] – 1
      rem := rem + 1
      while rem >= p[k], do
         p[k+1] := p[k]
         rem := rem - p[k]
         increase k by 1
      done
      p[k+1] := rem
      increase k by 1
   done
End

उदाहरण कोड

#include<iostream>
using namespace std;
int partitionCount(int n){ //used to count all possible partitions
   int p[n], k = 0, count = -1;
   p[k] = n; //add n as the first element of array
   while(true) { //repeat untill all elements are turned to 1
      count++;
      int rem = 0;
      while (k >= 0 && p[k] == 1){ // Move the pointer to the correct index where p[k] > 1.
         rem += p[k];
         k--;
      }
      if (k < 0) // If k < 0 then the all the element are broken down to 1.
         return count;
         //otherwise decrease the value by 1, and increase rem
         p[k]--;
         rem++;
      while (rem > p[k]) { // repeat until the number of 1's are greater than the value at k index.
         p[k+1] = p[k];
         rem -= p[k]; // Decrease the rem_val value.
         k++;
      }
      p[k+1] = rem; // Assign remaining value to the index next to k.
      k++;
   }
}
main() {
   int n, c;
   cout<<"Enter number for partition counting: ";
   cin>>n;
   if (n <= 0) { //n must be greater than or equal to 1
      cout<<"Invalid value of n";
      exit(1);
   }
   c = partitionCount(n);
   cout<<"The number of partitions: "<<c;
}

आउटपुट

Enter number for partition counting: 7
The number of partitions: 14

  1. सी ++ में सबसे गहरे नोड्स का योग खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें इसकी सबसे गहरी पत्तियों के मूल्यों का योग ज्ञात करना होगा। तो अगर पेड़ जैसा है - तब आउटपुट 11 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - मानचित्र m, और maxDepth . को परिभाषित करें एक पुनरावर्ती विधि हल करें () को परिभाषित करें, यह नोड

  1. C++ प्रोग्राम किसी संख्या के सम गुणनखंडों का योग ज्ञात करने के लिए?

    इस भाग में हम देखेंगे कि कैसे हम किसी संख्या के सभी सम अभाज्य गुणनखंडों का योग कुशल तरीके से प्राप्त कर सकते हैं। एक संख्या है मान लीजिए n =480, हमें इसका पूरा गुणनखंड प्राप्त करना है। 480 के अभाज्य गुणनखंड 2, 2, 2, 2, 2, 3, 5 हैं। सभी सम गुणनखंडों का योग 2+2+2+2+2 =10 है। इस समस्या को हल करने के लि

  1. सी ++ प्रोग्राम किसी दिए गए नंबर के अंकों का योग करने के लिए

    C++ भाषा में अंकों के योग की गणना करने के लिए यहां एक उदाहरण दिया गया है, उदाहरण #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "Enter the number : ";    cin >> x;    while (x != 0) {