इस समस्या में, हमें एक नंबर N दिया जाता है। हमारा काम C++ में विभाजित करने या itis के रूप में विचार करने के विकल्प के साथ अधिकतम मूल्य खोजने के लिए एक प्रोग्राम बनाना है।
समस्या का विवरण
अधिकतम का पता लगाने के लिए, हम किन्हीं दो मानों पर विचार कर सकते हैं, या तो मान को वैसे ही लें या हम विभाजित करके अधिकतम मान प्राप्त कर सकते हैं। मान को F(N/2) + F(N/) के रूप में निकाला जा सकता है। 3) + एफ(एन/4) +एफ(एन/5) ।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट :एन =8
आउटपुट :9
स्पष्टीकरण
F(8) =F(8/2) + F(8/3) + F(8/4) + F(8/5) =F(4) + F(2) + F(2) + F( 1) =4 + 2 + 2 + 1 =9
समाधान दृष्टिकोण
विचार केवल विभाजन के मूल्य के लिए एक ही फ़ंक्शन को कई बार कॉल करने का है। इसके लिए हमने अवधारणा गतिशील प्रोग्रामिंग का उपयोग किया है और समाधान खोजने के लिए उन्हें पुन:उपयोग करने के लिए 0 से एन तक एफ (i) के मानों को हल करने के लिए एक सरणी बनाई है।
उदाहरण
#include <iostream> using namespace std; int calcMaximumValue(int N) { int F[N + 1]; int divVal = 0; F[0] = 0; F[1] = 1; for (int i = 2; i <= N; i++) { divVal = ( F[i / 2] + F[i / 3] + F[i / 4] + F[i / 5] ); if(divVal > i) F[i] = divVal; else F[i] = i; } return F[N]; } int main() { int N = 8; cout<<"Maximum value with the choice of either dividing or considering as it is = "<<calcMaximumValue(N); return 0; }
आउटपुट
Maximum value with the choice of either dividing or considering as it is = 9