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

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


समस्या विवरण

मान लीजिए हमारे पास n x 3 आकार का एक ग्रिड है और हम ग्रिड के प्रत्येक सेल को तीन रंगों में से ठीक एक से रंगना चाहते हैं। रंग हैं लाल, पीला या हरा। अब एक प्रतिबंध है कि कोई भी दो आसन्न सेल का रंग समान नहीं होना चाहिए। हमारे पास n ग्रिड की पंक्तियों की संख्या है। हमें उन तरीकों की संख्या ज्ञात करनी है जिनसे हम इस ग्रिड को रंग सकते हैं। उत्तर बहुत बड़ा हो सकता है इसलिए इसे 10^9 + 7 से मॉड्यूलो करके लौटाएं।

उदाहरण

यदि इनपुट है: 1, तो आउटपुट होगा 12

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

हल करने का दृष्टिकोण

इस समस्या को हल करने के लिए निम्नलिखित चरणों का पालन करें (डायनामिक प्रोग्रामिंग):

  • m = 10^9 + 7
  • add() नामक एक फ़ंक्शन परिभाषित करें, जो a, b लेता है:
    • ((a % m) + (b % m)) % m लौटाएं
  • मुख्य विधि से:
    • a123 := 6, a121 = 6
    • i := 2 से आरंभ करें, जब i <= n, i को 1 से बढ़ाते हुए:
      • b121 := add(3 * a121, 2 * a123)
      • b123 := add(2 * a121, 2 * a123)
      • a121 := b121
      • a123 := b123
    • add(a123, a121) लौटाएं

C++ कार्यान्वयन

#include <bits/stdc++.h>
using namespace std;

typedef long long int lli;
const lli mod = 1e9 + 7;

class Solution {
public:
    lli add(lli a, lli b) {
        return ((a % mod) + (b % mod)) % mod;
    }
    int numOfWays(int n) {
        lli a123 = 6, a121 = 6;
        lli b123, b121;
        for (int i = 2; i <= n; i++) {
            b121 = add(3 * a121, 2 * a123);
            b123 = add(2 * a121, 2 * a123);
            a121 = b121;
            a123 = b123;
        }
        return add(a123, a121);
    }
};

int main() {
    Solution ob;
    cout << (ob.numOfWays(3));
    return 0;
}

इनपुट

3

आउटपुट

246
  1. C++ में पेंटाटोप संख्या C++ में पेंटाटोप संख्या

    एक पेंटाटोप संख्या को पास्कल के त्रिभुज में पांचवीं संख्या के रूप में वर्णित किया गया है। अब, चूंकि यह पांचवीं संख्या है, इसका मतलब है कि पास्कल के त्रिभुज में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है जो पास्कल के त्रिभुज की चौथी पंक्ति है। तो, इस

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

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

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

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