हमें पूर्णांक a,b,c,n दिए गए हैं। लक्ष्य x, y और z के योग को इस प्रकार अधिकतम करना है किax+by+cz=n.
उपरोक्त सूत्र से,
cz=n-(ax+by) z= (n- (ax+by))/c
x और y को नियत करके, प्रत्येक x, y और z के लिए उपरोक्त सूत्र का उपयोग करके z की गणना करें। योग की गणना करें और प्राप्त की गई अधिकतम राशि को संग्रहीत करें।
इनपुट
n = 6, a = 3, b = 4, c = 5;
आउटपुट
maximum x+y+z is 2.
स्पष्टीकरण − x=2, y=0 और z=0 ax+by+cz=n के लिए।
3*2+0*4+0*5=6 =n
इनपुट
n = 4, a = 3, b = 1, c = 2;
आउटपुट
maximum x+y+z=4
स्पष्टीकरण − x=0, y=4 और z=4 ax+by+cz=n के लिए।
0*3+4*1+0*2=4 =n
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांक a, b, c, और n का उपयोग व्यंजक ax+by+cz=n के लिए किया जाता है।
-
फ़ंक्शन मैक्सिमाइज़ (,int n,int a,int b,int c) इनपुट के रूप में a, b, c और n लेता है और x, y और z का अधिकतम संभव योग देता है जैसे कि ax+by+cz=n.
-
(i=0;i<=n;i+=a), भी
. के लिए सभी संभव कुल्हाड़ी मान लेना -
(j=0;j<=n;j+=b),
. के लिए हर संभव मान लेना -
z=(n- (ax+by))/c की गणना करें।
-
अब x=i/a और y=j/b। x+y+z की गणना करें और टेम्परेचर में स्टोर करें।
-
अगर temp> =maxx अब तक, maxx अपडेट करें।
-
वांछित योग के रूप में अधिकतम लौटाएं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int maximize(int n, int a, int b, int c){ int maxx = 0; // i for possible values of ax for (int i = 0; i <= n; i += a) // j for possible values of by for (int j = 0; j <= n - i; j += b) { float z = (n - (i + j)) / c; // If z is an integer if (floor(z) == ceil(z)) { int x = i / a; int y = j / b; int temp=x+y+z; if(temp>=maxx) maxx=temp; } } return maxx; } int main(){ int n = 6, a = 3, b = 4, c = 5; cout <<"Maximized the value of x + y + z :"<<maximize(n, a, b, c); return 0; }
आउटपुट
Maximized the value of x + y + z :2