এই সমস্যা, আমরা একটি ম্যাট্রিক্স দেওয়া হয়. আমাদের কাজ হল এমন একটি প্রোগ্রাম তৈরি করা যা 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] থেকে [R2][C-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