ধরুন আমাদের একটি m * n ম্যাট্রিক্স আছে যাকে বলা হয় ম্যাট এবং একটি পূর্ণসংখ্যা K, আমাদের আরেকটি ম্যাট্রিক্স উত্তর খুঁজতে হবে যেখানে প্রতিটি উত্তর[i][j] হল সমস্ত উপাদানের যোগফল। r][c] i - K <=r <=i + K, j - K <=c <=j + K, এবং (r, c) ম্যাট্রিক্সে একটি বৈধ অবস্থান। তাই যদি ইনপুট −
এর মত হয়1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
এবং k হল 1, তাহলে আউটপুট হবে −
12 | 21 | 16 | ৷
27 | 45 | 33 |
24 | 39 | 28 |
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=সারির সংখ্যা, এবং m =কলামের সংখ্যা
- একটি ম্যাট্রিক্স উত্তর সংজ্ঞায়িত করুন, যার ক্রম n x m
- আমি 0 থেকে n – 1
- পরিসরে j-এর জন্য 0 থেকে m – 1
- র জন্য i – k থেকে i + k
- পরিসরে j – k থেকে j + k
- যদি r এবং c ম্যাট্রিক্স সূচকের ভিতরে থাকে, তাহলে
- আনস[i, j] :=ans[i, j] + mat[r, c]
- পরিসরে c এর জন্য
- র জন্য i – k থেকে i + k
উদাহরণ(C++)
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
#includenamespace ব্যবহার করে std;void print_vector(vector > v){ cout <<"["; for(int i =0; i > ম্যাট্রিক্সব্লকসাম(ভেক্টর<ভেক্টর >এন্ড ম্যাট, int k) { int n =mat.size(); int m =mat[0].size(); ভেক্টর <ভেক্টর > ans(n , ভেক্টর (m)); for(int i =0; i =0 &&r =0 &&c > v1 ={{1,2,3},{4,5,6},{7,8,9}}; সমাধান ob; print_vector(ob.matrixBlockSum(v1, 1));}
ইনপুট
[[1,2,3],[4,5,6],[7,8,9]]1