ধরুন আমাদের একটি ম্যাট্রিক্স দেওয়া হয়েছে যাতে পূর্ণসংখ্যার মান রয়েছে। আমাদের ম্যাট্রিক্স থেকে সাবম্যাট্রিক্সগুলি খুঁজে বের করতে হবে যেখানে ম্যাট্রিক্সের উপাদানগুলির যোগফল একটি প্রদত্ত লক্ষ্য যোগফল মানের সমান। আমরা সাবমেট্রিসের সংখ্যা ফেরত দিই।
সুতরাং, যদি ইনপুট মত হয়
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 0 | 1 |
এবং লক্ষ্য =5, তাহলে আউটপুট হবে 3।
সাবমেট্রিসের সংখ্যা যার উপাদানের যোগফল 6 এর সমান 2।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=মাদুরের আকার
- m :=(যদি n 0 এর সমান হয়, তাহলে 0, অন্যথায় মাদুরের আকার[0])
- যদি m> n হয়, তাহলে −
- m x n মাত্রার একটি 2D অ্যারে ট্রান্সপোজ সংজ্ঞায়িত করুন
- আরম্ভ করার জন্য i :=0, যখন i
করুন - আরম্ভ করার জন্য j :=0, যখন j
করুন - ট্রান্সপোজ[j, i] :=ম্যাট[i, j]
- আরম্ভ করার জন্য j :=0, যখন j
- (pcnt[pref] 1 দ্বারা বাড়ান)
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#includeনেমস্পেস ব্যবহার করে std;int solve(vector >&mat, int sumTarget) { int n =mat.size(); int m =n ==0? 0 :মাদুর[0]. আকার(); যদি (m> n) { ভেক্টর<ভেক্টর > ট্রান্সপোজ(m, ভেক্টর (n)); (int i =0; i arr(n); (int q =p; q pcnt ={{0, 1}}; int pref =0; জন্য (int i =0; i সেকেন্ড; pcnt[pref]++; } } } উত্তর দিন;} int main() { ভেক্টর<ভেক্টর > ম্যাট ={{0, 0, 1, 0}, {0, 1, 0, 0}, {0, 1, 0, 1 }, {1, 1, 0, 1}};cout< ইনপুট
<প্রে>{{0, 0, 1, 0}, {0, 1, 0, 0}, {0, 1, 0, 1}, {1, 1, 0, 1}}, 5
আউটপুট
3