একটি n×n বর্গ ম্যাট্রিক্স দেওয়া আছে। নিচের উপাদানগুলোকে "বিশেষ উপাদান" বলা হয়:
- প্রধান ডায়াগোনালের উপাদানগুলো
- দ্বিতীয় ডায়াগোনালের উপাদানগুলো
- মাঝের সারিটি (n/2 তম সারি) এর উপাদানগুলো
- মাঝের কলামটি (n/2 তম কলাম) এর উপাদানগুলো
এই বিশেষ উপাদানগুলোর যোগফল বের করতে হবে।
সমাধানের ধাপসমূহ
নেস্টেড লুপ দিয়ে ম্যাট্রিক্স ট্রাভার্স করুন। প্রতিটি উপাদানের জন্য চেক করুন: i==j (প্রধান ডায়াগোনাল), i+j==n-1 (দ্বিতীয় ডায়াগোনাল), i==n/2 (মাঝের সারি), j==n/2 (মাঝের কলাম)। যেকোনো শর্ত পূরণ করলে যোগফলে যোগ করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void solve(int n, vector<vector<int>> mat) {
int res = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
if (i == j || i == n / 2 || j == n / 2 || i + j == n - 1)
res += mat[i][j];
}
cout << res << endl;
}
int main() {
int n = 4;
vector<vector<int>> mat = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
solve(n, mat);
return 0;
}
ইনপুট
4, {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}
আউটপুট
107
ব্যাখ্যা
4×4 ম্যাট্রিক্সের প্রধান ডায়াগোনাল: 1,6,11,16। দ্বিতীয় ডায়াগোনাল: 4,7,10,13। মাঝের সারি (২য়): 9,10,11,12। মাঝের কলাম (২য়): 3,7,11,15। ডুপ্লিকেট বাদ দিয়ে যোগফল = 107।