কম্পিউটার

C++ এ গ্রিডে ম্যাজিক স্কোয়ার


ধরুন আমাদের একটি গ্রিড আছে আমাদের সেই গ্রিডে ম্যাজিক স্কয়ার সাব-গ্রিডের সংখ্যা বের করতে হবে। একটি ম্যাজিক বর্গ হল একটি 3 x 3 গ্রিড যা 1 থেকে 9 পর্যন্ত স্বতন্ত্র সংখ্যা দিয়ে পূর্ণ যাতে প্রতিটি সারি, কলাম এবং উভয় কর্ণের সমষ্টি একই থাকে৷

সুতরাং, যদি ইনপুট মত হয়

4 3 8 4
9 5 1 9
2 7 6 2

তাহলে আউটপুট হবে 1, যেমন ম্যাজিক বর্গ

4 3 8
9 5 1
2 7 6

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • মান সহ একটি সেট সংজ্ঞায়িত করুন:[816357492, 834159672, 618753294, 672159834,492357816, 438951276, 294753618, 2769514]
  • আকারের একটি অ্যারে অফসেট সংজ্ঞায়িত করুন:9 x 2 :={{-2,-2},{-2,-1},{-2,0},{-1,-2},{-1 ,-1},{-1,0},{0,-2},{0,-1},{0,0}}
  • উত্তর :=0
  • আরম্ভ করার জন্য i :=2, যখন i <গ্রিড সারি গণনা, আপডেট (i 1 দ্বারা বৃদ্ধি), করুন −
    • আরম্ভ করার জন্য j :=2, যখন j <গ্রিড সারি গণনা করুন, আপডেট করুন (j 1 দ্বারা বৃদ্ধি করুন), করুন −
      • সমষ্টি :=0
      • আরম্ভ করার জন্য k :=0, যখন k <9, আপডেট করুন (k 1 দ্বারা বাড়ান), −
          করুন
        • সমষ্টি :=যোগফল * 10
        • সমষ্টি :=যোগফল + গ্রিড[i + অফসেট[k, 0], j + অফসেট[k, 1]]
      • উত্তর :=উত্তর + s-এ যোগফলের উপস্থিতি
  • উত্তর ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int numMagicSquaresInside(vector<vector<int>>& grid) {
      const unordered_set<int> s{816357492, 834159672, 618753294,
      672159834,492357816, 438951276, 294753618,276951438};
      const int offset[][2] = {{-2, -2}, {-2, -1}, {-2, 0},{-1, -2}, {-1, -1}, {-1, 0},
{ 0, -2}, { 0, -1}, { 0, 0}};
      int ans = 0;
      for(int i = 2; i< grid.size(); i++)
      {
         for(int j = 2; j<grid.size(); j++)
         {
            int sum = 0;
            for(int k = 0; k<9; k++)
            {
               sum *= 10;
               sum += grid[i + offset[k][0]][j+offset[k][1]];
            }
            ans += s.count(sum);
         }
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<vector<int>> v = {{4,3,8,4},{9,5,1,9},{2,7,6,2}};
   cout << (ob.numMagicSquaresInside(v));
}

ইনপুট

{{4,3,8,4},{9,5,1,9},{2,7,6,2}}

আউটপুট

1

  1. C++ এ দ্বিপদ সহগগুলির বর্গের সমষ্টি

  2. C++ এ একটি সংখ্যা ম্যাজিক কিনা তা পরীক্ষা করুন (সংখ্যার পুনরাবৃত্ত যোগফল 1)

  3. C++ এ অ্যালিকোট যোগফল?

  4. প্রথম n প্রাকৃতিক সংখ্যার বর্গের সমষ্টির জন্য C++ প্রোগ্রাম?