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

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

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

एल्गोरिदम

Begin
   function displayAllUniqueParts(int m):
   1) Set Index of last element k in a partition to 0
   2) Initialize first partition as number itself, p[k]=m
   3) Create a while loop which first prints current partition, then generates next partition. The loop stops    when the current partition has all 1s.
   4) Display current partition as displayArray(p, k + 1)
   5) Generate next partition:
   6) Initialize val = 0.
   Find the rightmost non-one value in p[]. Also, update the val so that we know how much value can be ccommodated.
   If k < 0,
      All the values are 1 so there are no more partitions
      Decrease the p[k] found above and adjust the val.
   7) If val is more,
   then the sorted order is violated. 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 displayArray(int p[], int m) { //to print the array
   for (int i = 0; i < m; i++)
   cout << p[i] << " ";
   cout << endl;
}
void displayAllUniqueParts(int m) {
   int p[m];
   int k = 0;  
   p[k] = m;
   while (true) {
      displayArray(p, k + 1);
      int val = 0; // initialize val
      while (k >= 0 && p[k] == 1) {
         val += p[k]; // update val
         k--;
      }
      if (k < 0)
      return;
      p[k]--;
      val++;
      //if val is more
      while (val > p[k]) {
         p[k + 1] = p[k];
         val = val - p[k];
         k++;
      }
      p[k + 1] = val;
      k++;
   }
}
int main() {
   cout << "Display All Unique Partitions of integer:7\n";
   displayAllUniqueParts(7);
   return 0;
}

आउटपुट

Display All Unique Partitions of integer:7
7
6 1
5 2
5 1 1
4 3
4 2 1
4 1 1 1
3 3 1
3 2 2
3 2 1 1
3 1 1 1 1
2 2 2 1
2 2 1 1 1
2 1 1 1 1 1
1 1 1 1 1 1 1

  1. सी++ में पिरामिड के आयतन के लिए कार्यक्रम

    पिरामिड के आधार के प्रकार के आधार पर पक्षों को देखते हुए पिरामिड के आयतन की गणना करना कार्य है। पिरामिड एक 3-डी आकृति है जिसकी बाहरी सतह पिरामिड के तेज किनारे को बनाने वाले सामान्य बिंदु पर त्रिकोणीय मिलती है। पिरामिड का आयतन उसके आधार के प्रकार पर निर्भर करता है। पिरामिड विभिन्न प्रकार के आधारों

  1. सी++ में ऑक्टाहेड्रोन के भूतल क्षेत्र के लिए कार्यक्रम

    ऑक्टाहेड्रोन क्या है? शब्द डोडेकेहेड्रॉन ग्रीक शब्दों से लिया गया है, जहां ऑक्टा का अर्थ है आठ और हेड्रॉन चेहरे को निर्दिष्ट करता है। ज्यामितीय में ऑक्टाहेड्रोन एक 3-डी प्लेटोनिक या आठ चेहरों वाला नियमित ठोस है। जैसे, अन्य आकृतियों के अष्टफलक में भी गुण होते हैं और वे हैं - 6 पॉलीहेड्रॉन शिखर 12 प

  1. QuickSort के लिए C++ प्रोग्राम?

    क्विकसॉर्ट एक छँटाई तकनीक है जो एक क्रमबद्ध सूची (सरणी) को क्रमबद्ध करने के लिए तुलना का उपयोग करती है। Quicksort को पार्टीशन एक्सचेंज सॉर्ट के रूप में भी जाना जाता है। यह एक स्थिर प्रकार नहीं है, क्योंकि समान प्रकार की वस्तुओं का सापेक्ष क्रम संरक्षित नहीं है। क्विकसॉर्ट एक सरणी पर काम कर सकता है,