কম্পিউটার

প্রদত্ত পণ্যের সাথে একটি জোড়া C++ এ ম্যাট্রিক্সে বিদ্যমান কিনা তা পরীক্ষা করুন


আমাদের ক্রম N x M এর একটি ম্যাট্রিক্স রয়েছে। এবং একটি পণ্য K। কাজ হল প্রদত্ত পণ্যের সাথে একটি জোড়া ম্যাট্রিক্সে উপস্থিত আছে কিনা তা পরীক্ষা করা।

ধরুন একটি ম্যাট্রিক্স নিচের মত -

৷ ৷ ৷ ৷ ৷ ৷
1 234
5 678
9 10 11 12
13 14 15 16

এখন যদি K 42 হয়, তাহলে (6, 7)

এর মত একটি জোড়া আছে

এই সমস্যা সমাধানের জন্য, আমরা হ্যাশিং ব্যবহার করব। আমরা ম্যাট্রিক্সের সমস্ত উপাদান নিয়ে হ্যাশ টেবিল তৈরি করব। আমরা ম্যাট্রিক্স অতিক্রম করা শুরু করব, ট্র্যাভার্স করার সময়, ম্যাট্রিক্সের বর্তমান উপাদানটি প্রদত্ত পণ্য দ্বারা বিভাজ্য কিনা তা পরীক্ষা করে দেখুন, এবং যখন পণ্য K কে বর্তমান উপাদান দ্বারা ভাগ করা হবে, তখন লভ্যাংশটি হ্যাশ টেবিলে উপস্থিত হবে। তাই প্রয়োজনীয় শর্ত হল −

এর মত

(k mod matrix[i, n]) মিথ্যা, এবং হ্যাশ টেবিলে আছে k/matrix[i, j]

যদি উপস্থিত থাকে, তাহলে সত্য ফেরত দিন, অন্যথায় হ্যাশ টেবিলে বর্তমান উপাদান সন্নিবেশ করুন৷

যদি কোন জোড়া পাওয়া না যায়, মিথ্যা ফেরত দিন।

উদাহরণ

#include <iostream>
#include <unordered_set>
#define N 4
#define M 4
using namespace std;
bool isPairPresent(int matrix[N][M], int K) {
   unordered_set<int> s;
   for (int i = 0; i < N; i++) {
      for (int j = 0; j < M; j++) {
         if ((K % matrix[i][j] == 0) && (s.find(K / matrix[i][j]) != s.end())) {
            return true;
         } else {
            s.insert(matrix[i][j]);
         }
      }
   }
   return false;
}
int main() {
   int matrix[N][M] = {{1, 2, 3, 4},
      {5, 6, 7, 8},
      {9, 10, 11, 12},
      {13, 14, 15, 16}};
      int k = 42;
   if (isPairPresent(matrix, k) == false)
      cout << "NO PAIR EXIST";
   else
      cout << "Pair is present";
}

আউটপুট

Pair is present

  1. প্রদত্ত ম্যাট্রিক্সটি ম্যাজিক স্কোয়ার নাকি C++ এ নয় তা পরীক্ষা করুন

  2. একটি প্রদত্ত ম্যাট্রিক্স স্পার্স নাকি C++-এ নয় তা পরীক্ষা করুন

  3. একটি ম্যাট্রিক্স সি++ এ প্রতিসম কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. C++-এ idempotent ম্যাট্রিক্স চেক করার প্রোগ্রাম