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

सभी संभावित तरीकों से एक पूर्णांक का विभाजन करने के लिए C++ प्रोग्राम

किसी दिए गए पूर्णांक के सभी अद्वितीय विभाजन प्राप्त करने के लिए यहां एक सी ++ प्रोग्राम है जैसे कि विभाजन के अतिरिक्त एक पूर्णांक होता है। इस प्रोग्राम में, एक धनात्मक पूर्णांक n दिया जाता है, और n को धनात्मक पूर्णांकों के योग के रूप में प्रदर्शित करने के लिए सभी संभव अद्वितीय तरीके उत्पन्न करता है।

एल्गोरिदम

Begin
   function displayAllUniqueParts(int m):
   Declare an array to store a partition p[m].
   Set Index of last element k in a partition to 0
   Initialize first partition as number itself, p[k]=m
   Create a while loop which first prints current partition, then generates next partition. The loop stops when the current partition has all 1s.
   Display current partition as displayArray(p, k + 1);
   Generate next partition:
   Initialize val=0.
   Find the rightmost non-one value in p[]. Also, update the val so that we know how much value can be accommodated.
   If k < 0,
      all the values are 1 so there are no more partitions
      Decrease the p[k] found above and adjust the val.
   If val is more,
      then the sorted order is violeted. Divide val in different values of size p[k] and copy these values at different positions after p[k].
      Copy val to next position and increment position.
End

उदाहरण कोड

#include<iostream>
using namespace std;
void printArr(int p[], int m) {
   for (int i = 0; i < m; i++)
      cout << p[i] << " ";
   cout << endl;
}
void printAllUniqueParts(int m) {
   int p[m];
   int k = 0;
   p[k] = m;
   while (true) {
      printArr(p, k + 1);
      int rem_val = 0;
      while (k >= 0 && p[k] == 1) {
         rem_val += p[k];
         k--;
      }
      if (k < 0)
         return;
         p[k]--;
         rem_val++;
      while (rem_val > p[k]) {
         p[k + 1] = p[k];
         rem_val = rem_val - p[k];
         k++;
      }
      p[k + 1] = rem_val;
      k++;
   }
}
int main() {
   cout << "All Unique Partitions of 3\n";
   printAllUniqueParts(3);
   cout << "\nAll Unique Partitions of 4\n";
   printAllUniqueParts(4);
   cout << "\nAll Unique Partitions of 5\n";
   printAllUniqueParts(5);
   return 0;
}

आउटपुट

All Unique Partitions of 3
3
2 1
1 1 1
All Unique Partitions of 4
4
3 1
2 2
2 1 1
1 1 1 1
All Unique Partitions of 5
5
4 1
3 2
3 1 1
2 2 1
2 1 1 1
1 1 1 1 1

  1. C++ प्रोग्राम में N × 3 ग्रिड को पेंट करने के तरीकों की संख्या

    मान लीजिए कि हमारे पास एक ग्रिड है जिसका आकार n x 3 है और हम ग्रिड के प्रत्येक सेल को तीन रंगों में से एक के साथ पेंट करना चाहते हैं। यहां जिन रंगों का उपयोग किया जाएगा वे हैं लाल, पीला और हरा। अब एक बाधा है, कि दो आसन्न कोशिकाओं का रंग समान नहीं है। हमारे पास ग्रिड की पंक्तियों की संख्या है। अंत म

  1. C++ में सभी संभावित पूर्ण बाइनरी ट्री

    मान लीजिए कि एक पूर्ण बाइनरी ट्री एक बाइनरी ट्री है जहां प्रत्येक नोड में ठीक 0 या 2 बच्चे होते हैं। तो हमें एन नोड्स के साथ सभी संभावित पूर्ण बाइनरी पेड़ों की एक सूची मिलनी है। उत्तर में प्रत्येक पेड़ के प्रत्येक नोड में node.val =0 होना चाहिए। लौटाए गए पेड़ किसी भी क्रम में हो सकते हैं। तो अगर इनप

  1. एक पूर्णांक के अंकों को ज़ूम करने के लिए C++ प्रोग्राम

    इस प्रोग्राम में हम देखेंगे कि C++ में किसी पूर्णांक के अंकों को कैसे ज़ूम किया जाता है। ज़ूमिंग का अर्थ है कुछ अन्य वर्णों का उपयोग करके संख्याओं को बड़े रूप में प्रिंट करना। तर्क सरल है, लेकिन हमें 0 से 9 तक एक-एक करके बड़ी संख्याएँ बनानी होंगी। उदाहरण कोड #include <bits/stdc++.h> using name