কম্পিউটার

অজগরে সব গাছ পোড়াতে কত দিন লাগবে তা বের করার কর্মসূচি


ধরুন আমাদের একটি 2D ম্যাট্রিক্স একটি বনকে প্রতিনিধিত্ব করে যেখানে তিন ধরনের কোষ রয়েছে:0 খালি সেল 1 ট্রি সেল 2 ট্রি ফায়ার সেলের উপর প্রতিদিন, একটি গাছে আগুন ধরে যখন একটি সংলগ্ন (উপরে, নীচে, বাম, ডান, নয়) তির্যক) গাছে আগুন লেগেছে। প্রতিটি গাছে আগুন ধরতে কত দিন লাগবে তা আমাদের খুঁজে বের করতে হবে। যদি তা সম্ভব না হয় -1 রিটার্ন করুন।

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

1
2
1
1
0
1
1
1
1

তাহলে আউটপুট হবে 4,

অজগরে সব গাছ পোড়াতে কত দিন লাগবে তা বের করার কর্মসূচি

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

  • উত্তর :=0
  • দুই :=একটি নতুন তালিকা
  • আমি 0 থেকে ম্যাট্রিক্সের সারি গণনার পরিসরের জন্য, কর
    • ম্যাট্রিক্সের 0 থেকে কলাম গণনা পরিসরে j-এর জন্য
        করুন
      • যদি ম্যাট্রিক্স[i, j] 2 এর মত হয়, তাহলে
        • দুইয়ের শেষে জোড়া (i, j) ঢোকান
      • যদি দুইটি খালি না থাকে, তখন কর
        • temp :=একটি নতুন তালিকা
        • প্রতি জোড়ার জন্য (i, j) দুইয়ে, করুন
          • প্রতি জোড়ার জন্য (x, y) [(i + 1, j) ,(i, j + 1) ,(i - 1, j) ,(i, j - 1) ], do
            • যদি x এবং y ম্যাট্রিক্সের পরিসরে থাকে এবং ম্যাট্রিক্স[x, y] 1 হয়, তাহলে
              • টেম্পের শেষে জোড়া (x, y) ঢোকান
        • প্রতিটি জোড়ার জন্য (i, j) temp, do
          • ম্যাট্রিক্স[i, j] :=2
        • দুই :=টেম্প
        • উত্তর :=উত্তর + (1 যদি দুটি খালি না হয় অন্যথায় 0)
      • ones =ম্যাট্রিক্সে 1s সংখ্যা গণনা করুন
      • উত্তর দিন যদি 0 হয় অন্যথায় -1

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

উদাহরণ

class Solution:
   def solve(self, matrix):
      ans = 0
      twos = []
      for i in range(len(matrix)):
         for j in range(len(matrix[0])):
            if matrix[i][j] == 2:
               twos.append((i, j))
      while twos:
         temp = []
         for i, j in twos:
            for x, y in [(i + 1, j), (i, j + 1), (i - 1, j), (i, j - 1)]:
               if 0 <= x < len(matrix) and 0 <= y < len(matrix[0]) and matrix[x][y] == 1:
                  temp.append((x, y))
         for i, j in temp:
            matrix[i][j] = 2
         twos = temp
         ans += 1 if twos else 0

      ones = sum(int(matrix[i][j] == 1) for i in range(len(matrix)) for j in range(len(matrix[0])))
      return ans if ones == 0 else -1

ob = Solution()
matrix = [
   [1, 2, 1],
   [1, 0, 1],
   [1, 1, 1]
]
print(ob.solve(matrix))

ইনপুট

matrix = [  
[1, 2, 1],  
[1, 0, 1],  
[1, 1, 1] ]

আউটপুট

4

  1. পাইথন ব্যবহার করে সমস্ত নোডে পৌঁছানোর জন্য ন্যূনতম সংখ্যক শীর্ষবিন্দু খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে টি পরিমাণে পৌঁছতে কত বছর লাগবে তা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে প্রদত্ত সংখ্যার সমস্ত অঙ্কের যোগফল খুঁজে বের করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম একটি তালিকায় সবচেয়ে বড় সংখ্যা খুঁজে বের করতে