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

C++ में बेल नंबर्स - सेट को पार्टीशन करने के तरीकों की संख्या


बेल नंबर का उपयोग n एलिमेंट्स के एक सेट को उन सबसेट्स में पार्टीशन करने के तरीकों की संख्या को दर्शाने के लिए किया जाता है जो खाली नहीं हैं (यानी कम से कम एक एलिमेंट रखते हैं)।

इस प्रोग्राम में, हमें n एलिमेंट्स का एक सेट दिया गया है और हमें सेट को नॉन-एम्प्टी सबसेट्स में पार्टीशन करने के तरीकों की संख्या ढूंढनी है।

उदाहरण

इनपुट: 3 
आउटपुट: 5

व्याख्या - मान लीजिए तीन एलिमेंट्स का सेट {1, 2, 3} है।

सबसेट्स हैं {{1}, {2}, {3}}; {{1}, {2,3}}; {{1, 2}, {3}}; {{2}, {1, 3}}; {1, 2, 3}।

बेल नंबर: एक बेल नंबर bell(n) k के सभी मानों के लिए s(n,k) के योग का मान देता है जो 1 से n तक होते हैं। यहां s(n,k) n एलिमेंट्स को k सबसेट्स में पार्टीशन करने की संख्या है।

फॉर्मूला होगा:

$$bell(n)=\sum_{k=0}^n S(n,k)$$

फंक्शन s(n,k) रिकर्सिवली है:

s(n+1,k) = k*s(n,k) + s(n,k-1)।

कार्यप्रणाली

(n+1)वें एलिमेंट को k पार्टीशन्स में जोड़ने पर, दो संभावनाएं हैं:

  • यह मौजूदा पार्टीशन्स के k पार्टीशन्स में एक जोड़ता है यानी s(n,k-1)।

  • पार्टीशन के सभी सेट्स में वैल्यू जोड़ना, यानी k*s(n,k)।

पहले कुछ बेल नंबर्स हैं 1, 1, 2, 5, 15, 52, 205

बेल नंबर खोजने के लिए, हमारे पास कुछ विधियां हैं:

  • सरल विधि k = 1 से n तक एक-एक करके s(n,k) की गणना करना और संख्या के सभी मानों का योग जोड़ना।

  • बेल ट्रायंगल का उपयोग करना नीचे दिए गए बेल के ट्रायंगल का उपयोग करना:

1 
1  2 
2  3  5 
5  7  10  15 
15 20 27  37  52

उदाहरण

#include <iostream> 
using namespace std; 

int bellNumber(int n) { 
    int bell[n+1][n+1]; 
    bell[0][0] = 1; 
    for (int i = 1; i <= n; i++) { 
        bell[i][0] = bell[i-1][i-1]; 
        for (int j = 1; j <= i; j++) 
            bell[i][j] = bell[i-1][j-1] + bell[i][j-1]; 
    } 
    return bell[n][0]; 
} 

int main() { 
    for (int n = 0; n <= 5; n++) 
        cout << "Bell Number " << n << " is " << bellNumber(n) << endl; 
    return 0; 
}

  1. C++ में डुडनी नंबर (Dudeney Numbers) C++ में डुडनी नंबर (Dudeney Numbers)

    संख्या सिद्धांत में परिभाषित एक गणितीय संख्या एक दी गई संख्या आधार में एक प्राकृतिक संख्या है जो दूसरी प्राकृतिक संख्या के पूर्ण घन के बराबर होती है जैसे कि पहली प्राकृतिक संख्या का अंक योग दूसरी संख्या के अंक योग के बराबर होता है (विकिपीडिया)। इस संख्या की खोज हेनरी डुडनी ने की थी। इसका गणितीय सू

  1. C++ में एक सेट को k उपसमुच्चयों में विभाजित करने के तरीकों की संख्या गिनें C++ में एक सेट को k उपसमुच्चयों में विभाजित करने के तरीकों की संख्या गिनें

    समस्या विवरण दो संख्याएं e और p दी गई हैं। लक्ष्य उन तरीकों की संख्या गिनना है जिनसे हम एक सेट के e तत्वों को p पार्टीशन/उपसमुच्चयों में विभाजित कर सकते हैं। उदाहरण इनपुट e=4 p=2 आउटपुट सेट को k उपसमुच्चयों में विभाजित करने के तरीकों की संख्या: 7 व्याख्या यदि तत्व हैं: a b c d तो उन्हें 2 पार्टीशन

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

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