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

C++ में डोमिनोज़ और ट्रोमिनोज़ के साथ क्षेत्र को भरने के लिए कॉन्फ़िगरेशन की संख्या गिनने का कार्यक्रम है


मान लीजिए कि हमारे पास दो आकार हैं, डोमिनोज़ और ट्रोमिनो। डोमिनोज़ 2 x 1 आकार के होते हैं और ट्रोमिनोज़ 'L' आकार के होते हैं। उन्हें नीचे की तरह घुमाया जा सकता है -

C++ में डोमिनोज़ और ट्रोमिनोज़ के साथ क्षेत्र को भरने के लिए कॉन्फ़िगरेशन की संख्या गिनने का कार्यक्रम है

यदि हमारे पास संख्या n है, तो हमें 2 x n बोर्ड को इन दो प्रकार के टुकड़ों से भरने के लिए कई विन्यासों को खोजना होगा। जैसा कि हम टाइलिंग में जानते हैं, प्रत्येक वर्ग को एक टाइल से ढंकना चाहिए।

तो अगर इनपुट 3 है, तो आउटपुट 5 होगा। तो व्यवस्थाएं [XYZ XXZ XYY XXY XYY] और [XYZ YYZ XZZ XYY XXY] हो सकती हैं, यहां अलग-अलग टाइलों के लिए अलग-अलग अक्षरों का उपयोग किया जाता है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • आकार N + 5 का dp नामक एक सरणी बनाएं, dp[1] सेट करें:=1, dp[2]:=2 और dp[3]:=5

  • मैं के लिए 4 से एन की सीमा में

    • dp[i] :=2*dp[i - 1] + dp[i - 3]

  • वापसी डीपी [एन]

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
int add(int a, int b){
   return ((a % MOD) + (b % MOD)) % MOD;
}
class Solution {
   public:
   int solve(int N) {
      vector <int> dp(N + 5);
      dp[1] = 1;
      dp[2] = 2;
      dp[3] = 5;
      for(int i = 4; i <= N; i++){
         dp[i] = add(2 * dp[i − 1], dp[i − 3]);
      }
      return dp[N];
   }
};
main(){
   Solution ob;
   cout << (ob.solve(3));
}

इनपुट

3

आउटपुट

5

  1. C++ में किसी सरणी में सम और विषम तत्वों की संख्या गिनें

    इस ट्यूटोरियल में, हम किसी सरणी में सम और विषम तत्वों की संख्या ज्ञात करने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक सरणी प्रदान की जाएगी। हमारा काम दिए गए सरणी में सम और विषम तत्वों की संख्या की गणना करना है। उदाहरण #include<iostream> using namespace std; void CountingEvenOdd(int

  1. केवल C++ में 3 और 8 अंकों वाली संख्या में कनवर्ट करें

    इस ट्यूटोरियल में, हम किसी संख्या को केवल 3 और 8 के रूप में अंकों में बदलने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक यादृच्छिक संख्या प्रदान की जाएगी। हमारा काम है कि संख्या में से 1 जोड़कर या घटाकर या संख्या के अंकों को किसी वांछित अंक में परिवर्तित करके इसके अंकों को केवल 3 और 8 में

  1. पायथन में 2 x 1 डोमिनोज़ के साथ 3 x n बॉक्स भरने के तरीकों की संख्या की गणना करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक संख्या n है, हमें उन तरीकों की संख्या ज्ञात करनी है जिनसे हम एक (3 x n) ब्लॉक को 1 x 2 डोमिनोज़ से भर सकते हैं। हम आवश्यकता पड़ने पर डोमिनोज को घुमा सकते हैं। अगर उत्तर बहुत बड़ा है तो इस मॉड को 10^9 + 7 लौटाएं। इसलिए, यदि इनपुट n =4 जैसा है, तो आउटपुट 11 होगा। इसे हल करन