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

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


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

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

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

इनपुट: 3, 5 और 10 का उपयोग करके पहुंचने के लिए अधिकतम स्कोर। मान लें इनपुट 50 है। आउटपुट: (3, 5, 10) का उपयोग करके पहुंचने के तरीकों की संख्या 50: 14

एल्गोरिदम

countWays(n)

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

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

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

शुरू     आकार n+1 की तालिका बनाएं     सभी तालिका प्रविष्टियों को 0 पर सेट करें     table[0] := 1     i := 3 से n तक, करें       table[i] := table[i] + table[i-3]     किया     i := 5 से n तक, करें       table[i] := table[i] + table[i-5]     किया     i := 10 से n तक, करें       table[i] := table[i] + table[i-10]     किया     table[n] वापस करें अंत

उदाहरण

#include <iostream> using namespace std; // स्कोर n तक पहुंचने के तरीकों की संख्या लौटाता है int countWay(int n) {     int table[n+1], i;       //प्रत्येक i के मान के लिए गिनती संग्रहीत करने के लिए तालिका     for(int i = 0; i<=n; i++) {       table[i] = 0;       //सभी तालिका मानों को 0 से आरंभ करें     }     table[0] = 1;       //इनपुट 0 के लिए 1 सेट करें     for (i=3; i<=n; i++)       //3 का उपयोग करके हल करने का प्रयास करें       table[i] += table[i-3];     for (i=5; i<=n; i++)       //5 का उपयोग करके हल करने का प्रयास करें       table[i] += table[i-5];     for (i=10; i<=n; i++)       //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 उपसमुच्चयों में विभाजित करने के तरीकों की संख्या गिनें C++ में एक सेट को k उपसमुच्चयों में विभाजित करने के तरीकों की संख्या गिनें

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

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

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

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

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