ধরুন আমাদের কাছে শহরের ব্লকগুলিকে প্রতিনিধিত্বকারী অনন্য স্ট্রিংগুলির একটি ম্যাট্রিক্স রয়েছে এবং স্ট্রিংগুলির আরেকটি তালিকা রয়েছে যা দেখার জন্য ব্লক রয়েছে৷ আমরা যদি ব্লক ম্যাট্রিক্সে থাকি[0][0], তাহলে প্রতিটি ব্লকে ক্রমানুসারে পরিদর্শনের জন্য প্রয়োজনীয় মোট ম্যানহাটন দূরত্ব খুঁজুন।
সুতরাং, যদি ইনপুট মত হয়
প্রশ্ন | B | C |
D | E | Z |
G | G | i |
ব্লক =[H,B,C]
তাহলে আউটপুট হবে 6 কারণ "h" হল 2 ব্লক নীচে (দক্ষিণ) এবং 1 ব্লক ডান (পূর্ব), "b" হল 2 ব্লকআপ (উত্তর), "c" হল 1 ব্লক ডান (পূর্ব)।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- coords :='স্টার্ট' কী এবং মান (0, 0) সহ একটি মানচিত্র
- মাদুরের প্রতিটি সারির জন্য, করুন
- ম্যাটের প্রতিটি কলের জন্য, করুন
- কোর্ডে (সারি, কল) ঢোকান[mat[রো, কল]]
- ম্যাটের প্রতিটি কলের জন্য, করুন
- dist :=0
- শুরুতে 'স্টার্ট' যোগ করে ব্লক আপডেট করুন
- আমি 0 থেকে ব্লকের আকার -1 এর জন্য,
- করুন
- c1 :=coords[blocks[i]]
- c2 :=coords[block[i+1]]
- d :=|c1[0]-c2[0]| + |c1[1]-c2[1]|
- dist :=dist + d
- প্রত্যাবর্তন জেলা
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, mat, blocks): coords = {'start': (0,0)} for row in range(len(mat)): for col in range(len(mat[row])): coords[mat[row][col]] = (row,col) dist = 0 blocks = ['start']+blocks for i in range(len(blocks)-1): c1 = coords[blocks[i]] c2 = coords[blocks[i+1]] d = abs(c1[0]-c2[0]) + abs(c1[1]-c2[1]) dist += d return dist ob = Solution() inp = [["q", "b", "c"], ["d", "e", "z"], ["g", "h", "i"]] blk = ["h", "b", "c"] print(ob.solve(inp, blk))
ইনপুট
[["q", "b", "c"],["d", "e", "z"],["g", "h", "i"]]
আউটপুট
6