इस ट्यूटोरियल में, हम दो व्यक्तियों द्वारा एक बार मिलने के लिए अधिकतम अंक प्राप्त करने के लिए एक कार्यक्रम पर चर्चा करेंगे
इसके लिए हमें एक मैट्रिक्स प्रदान किया जाएगा जिसमें अंक वाले सेल होंगे। हमारा काम उस रास्ते को खोजना है जब दो कोनों से शुरू होने वाले दो लोग इस तरह मिलते हैं कि उनके पास अधिकतम अंक एकत्र हो रहे हैं।
उदाहरण
#include<bits/stdc++.h> #define M 3 #define N 3 using namespace std; int findMaxPoints(int A[][M]) { //storing points int P1S[M+1][N+1], P1E[M+1][N+1]; memset(P1S, 0, sizeof(P1S)); memset(P1E, 0, sizeof(P1E)); int P2S[M+1][N+1], P2E[M+1][N+1]; memset(P2S, 0, sizeof(P2S)); memset(P2E, 0, sizeof(P2E)); for (int i=1; i<=N; i++) for (int j=1; j<=M; j++) P1S[i][j] = max(P1S[i-1][j], P1S[i][j-1]) + A[i-1][j-1]; for (int i=N; i>=1; i--) for (int j=M; j>=1; j--) P1E[i][j] = max(P1E[i+1][j], P1E[i][j+1]) + A[i-1][j-1]; for (int i=N; i>=1; i--) for(int j=1; j<=M; j++) P2S[i][j] = max(P2S[i+1][j], P2S[i][j-1]) + A[i-1][j-1]; for (int i=1; i<=N; i++) for (int j=M; j>=1; j--) P2E[i][j] = max(P2E[i-1][j], P2E[i][j+1]) + A[i-1][j-1]; int ans = 0; for (int i=2; i<N; i++) { for (int j=2; j<M; j++) { int op1 = P1S[i][j-1] + P1E[i][j+1] + P2S[i+1][j] + P2E[i-1][j]; int op2 = P1S[i-1][j] + P1E[i+1][j] + P2S[i][j-1] + P2E[i][j+1]; ans = max(ans, max(op1, op2)); } } return ans; } int main() { int A[][M] = { {100, 100, 100}, {100, 1, 100}, {100, 100, 100} }; cout << "Max Points : " << findMaxPoints(A); return 0; }
आउटपुट
Max Points : 800