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

C++ में N को 1, 3 और 4 के योग के रूप में व्यक्त करने के विभिन्न तरीकों की गिनती


एक धनात्मक संख्या N इनपुट के रूप में दी गई है। लक्ष्य उन तरीकों की संख्या ढूंढना है जिनमें हम N को केवल 1s, 3s और 4s के योग के रूप में व्यक्त कर सकते हैं। उदाहरण के लिए, यदि N 4 है तो इसे 1+1+1+1, 3+1, 1+3, 4 के रूप में दर्शाया जा सकता है तो तरीकों की संख्या 4 होगी।

उदाहरणों से समझते हैं।

उदाहरण के लिए

इनपुट -  N=5

आउटपुट - N को 1, 3 और 4 के योग के रूप में व्यक्त करने के विभिन्न तरीकों की संख्या: 6

व्याख्या -  5 को इस प्रकार दर्शाया जा सकता है:

  • 1+1+1+1+1
  • 1+3+1
  • 3+1+1
  • 1+1+3
  • 4+1
  • 1+4

इनपुट - N=6

आउटपुट - N को 1, 3 और 4 के योग के रूप में व्यक्त करने के विभिन्न तरीकों की संख्या: 9

व्याख्या - 9 को इस प्रकार दर्शाया जा सकता है:

  • 1+1+1+1+1+1
  • 3+1+1+1
  • 1+3+1+1
  • 1+1+3+1
  • 1+1+1+3
  • 3+3
  • 4+1+1
  • 1+4+1
  • 1+1+4

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

इस दृष्टिकोण में हम N को 1, 3 और 4 के योग के रूप में दर्शाने के तरीकों की संख्या गिनने के लिए डायनामिक प्रोग्रामिंग दृष्टिकोण का उपयोग करेंगे। सरणी arr[i] लें जहां i संख्या को दर्शाता है और arr[i] इसे योग के रूप में दर्शाने के तरीके।

 बेस केस होंगे 

arr[0]=0 ( कोई तरीका नहीं )

arr[1]=1 ( केवल एक तरीका, 1 )

arr[2]=1 ( केवल एक तरीका, 1+1 )

arr[3]=2 ( 1+1+1, 3 )

अब अन्य संख्याएं 4, 5 … i आदि के तरीके होंगे  arr[i-1]+arr[i-3]+arr[i-4]।

  • एक धनात्मक संख्या N को इनपुट के रूप में लें। 
  • फ़ंक्शन Expres_sum(int N) N लेता है और N को 1, 3 और 4 के योग के रूप में व्यक्त करने के विभिन्न तरीकों की संख्या लौटाता है।
  • तरीकों की गिनती संग्रहीत करने के लिए सरणी arr[N+1] लें।
  • बेस केस इनिशियलाइज़ करें   arr[0] = 1, arr[1] = 1, arr[2] = 1 और arr[3] = 2।
  • i=4 से i<=N तक शेष मानों के लिए पार करें।
  • arr[i] को arr[i - 1] + arr[i - 3] + arr[i - 4] के योग के रूप में लें।
  • for लूप के अंत में परिणाम के रूप में arr[N] लौटाएं।

उदाहरण

#include <bits/stdc++.h> using namespace std; int Expres_sum(int N) {    int arr[N + 1];    arr[0] = 1;    arr[1] = 1;    arr[2] = 1;    arr[3] = 2;    for (int i = 4; i <= N; i++) {       arr[i] = arr[i - 1] + arr[i - 3] + arr[i - 4];    }    return arr[N]; } int main() {    int N = 5;    cout << "Count of different ways to express N as the sum of 1, 3 and 4 are: " << Expres_sum(N);    return 0; }

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -

आउटपुट

Count of different ways to express N as the sum of 1, 3 and 4 are: 6

  1. - C++ में समान योग और XOR (Equal Sum and XOR)

    इस समस्या में, हमें एक पूर्णांक n दिया गया है। हमारा कार्य i = 0 से n तक के उन पूर्णांकों की संख्या गिनने के लिए एक प्रोग्राम बनाना है जहां योग XOR के बराबर हो यानी (n+i) = (n^i)। उदाहरण से समझते हैं: इनपुट: n = 4 आउटपुट: 4 व्याख्या: i = 0 से n तक के सभी मानों पर विचार करते हुए, i = 0, 4 + 0 = 4,

  1. C++ में उन नोड्स को गिनना जिनका योग X के साथ फाइबोनैचि संख्या है C++ में उन नोड्स को गिनना जिनका योग X के साथ फाइबोनैचि संख्या है

    नोड्स के वजन वाली एक बाइनरी ट्री दी गई है। लक्ष्य उन नोड्स की संख्या ढूंढना है जिनके वजन ऐसे हैं कि संख्या एक फाइबोनैचि संख्या है। फाइबोनैचि श्रृंखला में संख्याएं हैं: 0, 1, 1, 2, 3, 5, 8, 13... nth संख्या (n-1)th और (n-2)th का योग है। यदि वजन 13 है तो यह एक फाइबोनैचि संख्या है इसलिए नोड गिना जाएगा।

  1. C++ में n x m आकार के फर्श को 1 x m टाइलों से टाइल करने के तरीकों की संख्या गिनें C++ में n x m आकार के फर्श को 1 x m टाइलों से टाइल करने के तरीकों की संख्या गिनें

    समस्या विवरण दो संख्याएं n और m दी गई हैं जो कमरे के फर्श की लंबाई और चौड़ाई दर्शाती हैं। लक्ष्य उन तरीकों की संख्या गिनना है जिनसे इस फर्श को 1xm आकार की टाइलों का उपयोग करके टाइल किया जा सकता है। उदाहरण इनपुट n=3 m=2 आउटपुट फर्श को टाइल करने के तरीकों की संख्या: 3 व्याख्या तीन 1x2 टाइलें नीचे दि