কম্পিউটার

C++ এ 2D গ্রিড শিফট করুন


ধরুন আমাদের m x n আকারের একটি 2D গ্রিড আছে। আমাদের আরেকটি পরিবর্তনশীল k আছে। আমাদের থিগ্রিড কে বার পরিবর্তন করতে হবে। শিফট অপারেশন নিম্নরূপ হবে

  • G[i, j] গ্রিডের উপাদান G[i, j + 1]

    এ চলে যায়
  • G[i, n – 1] গ্রিডের উপাদান G[i + 1, 0]

    এ চলে যায়
  • G[m - 1, n - 1] গ্রিডের উপাদান G[0, 0]

    এ চলে যায়

তাই যদি গ্রিড −

এর মত হয়
1 2 3
4 5 6
7 8 9

আউটপুট হবে −

৷ ৷
9 12
3 45
6 7 8

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

  • শিফট অপারেশন ম্যাট্রিক্সকে ইনপুট হিসাবে গ্রহণ করবে

  • n =সারির সংখ্যা, m :=কলামের সংখ্যা, x :=নীচের ডানদিকের উপাদান

  • i এর জন্য :=n – 1, নিচে 0

    • j এর জন্য :=m – 1 থেকে 0

      নিচে
      • যদি j =0 এবং i> 0 হয়, তাহলে G[i, j] :=G[i – 1, m - 1]

      • অন্যথায় যদি j> 0 হয়, তাহলে G[i, j] :=G[i, j – 1]

  • G[0, 0] :=x

  • নিম্নলিখিত নিয়ম দ্বারা শিফট অপারেশন কল করুন −

  • যখন k 0

    নয়
    • গ্রিড স্থানান্তর করুন G

    • k 1 দ্বারা হ্রাস করুন

  • রিটার্ন গ্রিড G

উদাহরণ (C++)

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

#include নেমস্পেস ব্যবহার করে std;void print_vector(vector> v){ cout <<"["; for(int i =0; i>&গ্রিড){ int n =grid.size(); int m =গ্রিড[0].size(); int x =গ্রিড[n-1][m-1]; for(int i =n-1; i>=0; i--){ for(int j =m-1;j>=0;j--){ if(j ==0 &&i>0){ গ্রিড[i][j] =গ্রিড[i-1][m-1]; } অন্যথায় যদি(j>0){ গ্রিড[i][j] =গ্রিড[i][j-1]; } } } গ্রিড[0][0] =x; } ভেক্টর<ভেক্টর> শিফটগ্রিড(ভেক্টর<ভেক্টর>&g, int k) { while(k--){ shift(g); } রিটার্ন g; }};প্রধান(){সমাধান ob; ভেক্টর<ভেক্টর> ম্যাট ={{1,2,3},{4,5,6},{7,8,9}}; print_vector(ob.shiftGrid(mat, 1));}

ইনপুট

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

আউটপুট

<প্রে>[[9, 1, 2, ],[3, 4, 5, ], [6, 7, 8, ],]
  1. C++ এ রেখার প্রতিফলন

  2. C++ এ ডায়াগোনাল ট্রাভার্স II

  3. C++ এ কিল প্রসেস

  4. C++ এ কাঠবিড়ালি সিমুলেশন