इस समस्या में, हमें एक मैट्रिक्स दिया गया है। हमारा काम एक प्रोग्राम बनाना है जो C++ में मैट्रिक्स में घंटे के चश्मे का अधिकतम योग पाता है।
कार्यक्रम विवरण - यहां, हम दिए गए मैट्रिक्स तत्वों के लिए बनाए जा सकने वाले सभी घंटे के चश्मे का अधिकतम योग पाएंगे।
आवर ग्लास निम्नलिखित रूप में मैट्रिक्स में बना एक 7 तत्व आकार है,
X X X X X X X
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट -
array ={ {2 4 0 0} {0 1 1 0} {4 2 1 0} {0 3 0 1}}
आउटपुट -
स्पष्टीकरण -
Hour glass are : 2 4 0 0 1 1 1 2 4 2 1 0 3 0 4 0 0 1 1 0 1 1 2 1 0 3 0 1
तो, निम्न अनुक्रमित का उपयोग करके एक घंटे का चश्मा बनाया जा सकता है,
matrix[i][j] matrix[i][j+1] matrix[i][j+2] matrix[i+1][j+1] matrix[i+2][j] matrix[i+2][j+1] matrix[i+2][j+2]
हम सरणी के इन सभी तत्वों का योग [0] [0] से [आर 2] [सी -2] के शुरुआती बिंदुओं तक पाएंगे। और सरणी तत्वों से बनाए गए इन सभी घंटे के चश्मे के लिए अधिकतम योग खोजें।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,
#include<iostream> using namespace std; const int row = 4; const int col = 4; int findHourGlassSum(int mat[row][col]){ if (row<3 || col<3) return -1; int maxSum = 0; for (int i=0; i<row-2; i++){ for (int j=0; j<col-2; j++){ int hrSum = (mat[i][j]+mat[i][j+1]+mat[i][j+2])+ (mat[i+1][j+1])+ (mat[i+2][j]+mat[i+2][j+1]+mat[i+2][j+2]); maxSum = max(maxSum, hrSum); } } return maxSum; } int main() { int mat[row][col] = { {2, 4, 0, 0}, {0, 1, 1, 0}, {4, 2, 1, 0}, {0, 3, 0, 1}}; int maxSum = findHourGlassSum(mat); if (maxSum == -1) cout<<"Not possible"; else cout<<"Maximum sum of hour glass created is "<<maxSum; return 0; }
आउटपुट
Maximum sum of hour glass created is 14