ধরুন আমাদের 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 | 1 | ৷2 |
3 | 4 | ৷5 |
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