हमें पूर्णांक a,b,c,n दिए गए हैं। लक्ष्य x, y और z के योग को अधिकतम करना है जैसे कि ax+by+cz=n।
उपरोक्त सूत्र से,
cz=n-(ax+by) z= (n- (ax+by))/c
x और y को निश्चित करके, उपरोक्त सूत्र का उपयोग करके z की गणना करें, प्रत्येक x, y और z के लिए। योग की गणना करें और अब तक प्राप्त अधिकतम ऐसे योग को संग्रहीत करें।
इनपुट
n = 6, a = 3, b = 4, c = 5;
आउटपुट
अधिकतम x+y+z है 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;
आउटपुट
अधिकतम x+y+z=4
व्याख्या: x=0, y=4 और z=0 के लिए ax+by+cz=n।
0*3+4*1+0*2=4 = n
प्रयुक्त दृष्टिकोण
- अभिव्यक्ति ax+by+cz=n के लिए पूर्णांक a,b,c,और n उपयोग किए जाते हैं।
- फ़ंक्शन maximize(int n,int a,int b,int c) a, b, c और n को इनपुट के रूप में लेता है और x, y और z के अधिकतम संभावित योग को लौटाता है जैसे कि ax+by+cz=n।
- सभी संभावित ax मान लें, for(i=0;i<=n;i+=a), साथ ही
- सभी संभावित by मान लें for(j=0;j<=n;j+=b),
- z= (n- (ax+by))/c की गणना करें।
- अब x=i/a और y=j/b। x+y+z की गणना करें और temp में संग्रहीत करें।
- यदि temp>=maxx अब तक, maxx अपडेट करें।
- वांछित योग के रूप में maxx लौटाएं।
उदाहरण कोड
#include <bits/stdc++.h> using namespace std; int maximize(int n, int a, int b, int c){ int maxx = 0; // i ax के संभावित मानों के लिए for (int i = 0; i <= n; i += a) // j by के संभावित मानों के लिए for (int j = 0; j <= n - i; j += b) { float z = (n - (i + j)) / c; // यदि z एक पूर्णांक है 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 <<"x + y + z का अधिकतम मान: "<<maximize(n, a, b, c); return 0; } आउटपुट
x + y + z का अधिकतम मान: 2