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

किसी गेम में दिए गए स्कोर तक पहुंचने के तरीकों की संख्या गिनें


आइए एक ऐसे खेल पर विचार करें, जिसमें एक खिलाड़ी प्रत्येक चाल में 3, 5 या 10 के साथ कुछ अंक प्राप्त कर सकता है। एक लक्ष्य स्कोर भी दिया जाता है। हमारा काम यह पता लगाना है कि उन तीन बिंदुओं के साथ लक्ष्य स्कोर तक पहुंचने के लिए कितने संभावित तरीके हैं।

गतिशील प्रोग्रामिंग दृष्टिकोण से, हम 0 से n तक के सभी स्कोर की एक सूची बनाएंगे, और 3, 5, 10 के प्रत्येक मान के लिए, हम केवल तालिका को अपडेट करते हैं।

इनपुट और आउटपुट

Input:
The maximum score to reach using 3, 5 and 10. Let the input is 50.
Output:
Number of ways to reach using (3, 5, 10)50: 14

एल्गोरिदम

countWays(n)

केवल 3 संभावित स्कोर हैं, वे 3, 5 और 10 हैं

इनपुट: n पहुंचने के लिए अधिकतम स्कोर है।

आउटपुट - स्कोर n तक पहुंचने के संभावित तरीकों की संख्या।

Begin
   create table of size n+1
   set all table entries to 0
   table[0] := 1

   for i := 3 to n, do
      table[i] := table[i] + table[i-3]
   done

   for i := 5 to n, do
      table[i] := table[i] + table[i-5]
   done

   for i := 10 to n, do
      table[i] := table[i] + table[i-10]
   done

   return table[n]
End

उदाहरण

#include <iostream>
using namespace std;

// Returns number of ways to reach score n
int countWay(int n) {
   int table[n+1], i;    //table to store count for each value of i

   for(int i = 0; i<=n; i++) {
      table[i] = 0;    // Initialize all table values as 0
   }

   table[0] = 1;       //set for 1 for input as 0
   for (i=3; i<=n; i++)    //try to solve using 3
      table[i] += table[i-3];

   for (i=5; i<=n; i++)    //try to solve using 5
      table[i] += table[i-5];

   for (i=10; i<=n; i++)    //try to solve using 10
      table[i] += table[i-10];

   return table[n];
}

int main() {
   int n;
   cout << "Enter max score: ";
   cin >> n;
   cout << "Number of ways to reach using (3, 5, 10)" << n <<": " << countWay(n);
}

आउटपुट

Enter max score: 50
Number of ways to reach using (3, 5, 10)50: 14
का उपयोग करके पहुंचने के कई तरीके
  1. C++ में एक सेट को k सबसेट में विभाजित करने के तरीकों की संख्या की गणना करें

    दो अंक e और p दिए गए हैं। लक्ष्य उन तरीकों की संख्या गिनना है जिनसे हम एक सेट के e तत्वों को p विभाजन/सबसेट में विभाजित कर सकते हैं। उदाहरण के लिए इनपुट e=4 p=2 आउटपुट Count of number of ways to partition a set into k subsets are: 7 स्पष्टीकरण If elements are: a b c d then ways to divide them into

  1. पायथन में दिए गए मैट्रिक्स में द्वीपों की संख्या गिनने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी मैट्रिक्स है, हमें मैट्रिक्स में द्वीपों की संख्या ज्ञात करनी है। यहां 1 जमीन के लिए है और 0 पानी के लिए है, इसलिए एक द्वीप 1s का एक समूह है जो पड़ोसी हैं और जिनकी परिधि पानी से घिरी हुई है। यहां हम विचार कर रहे हैं कि पड़ोसी केवल क्षैतिज या लंबवत हो सकते हैं, विकर्ण

  1. पायथन में दी गई संख्या में बिट 1 की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक संख्या n है, हमें उस संख्या के द्विआधारी प्रतिनिधित्व में मौजूद बिट 1 की संख्या ज्ञात करनी है। तो, अगर इनपुट 12 जैसा है, तो आउटपुट 2 होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - गिनती :=0 जबकि n गैर-शून्य है, करें गिनती :=गिनती + (n और 1) n :=(n / 2) की मंजिल