কম্পিউটার টিউটোরিয়াল

পাইথনে বৃষ্টির পানি কতটুকু জমা রাখা যায় তা খুঁজে বের করার প্রোগ্রাম


মান ল করুন n সংখ্যক নন-নেগেটিভ ইন্টিজারের একটি অ্যারে। এগুলো উচ্চতা বোঝায় যেখানে প্রতিটি বারের প্রস্থ ১। বৃষ্টিপাতের পর কতটুকু পানি জমা রাখা যায় তা গণনা করতে হবে। ম্যাপটি এমন হবে:

পাইথনে বৃষ্টির পানি কতটুকু জমা রাখা যায় তা খুঁজে বের করার প্রোগ্রাম

এখানে ৮টি নীল বক্স দেখা যাচ্ছে, তাই আউটপুট হবে ৮।

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:

  • একটি স্ট্যাক st, water := 0 এবং i := 0 সংজ্ঞায়িত করুন
  • যখন i < height-এর আকার:
    • যদি স্ট্যাক খালি থাকে বা height[stack top] >= height[i], তবে i কে স্ট্যাকে পুশ করুন, i ১ বাড়ান
    • অন্যথায়:
      • x := stack top এলিমেন্ট, স্ট্যাক থেকে টপ মুছে ফেলুন
      • যদি স্ট্যাক খালি না থাকে, তবে:
        • temp := min(height[stack top], height[i])
        • dest := i - stack top - 1
        • water := water + dist * (temp - height[x])
  • water ফেরত দিন

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:

উদাহরণ

class Solution(object):    def trap(self, height):       stack = []       water = 0       i=0       while i<len(height):          if len(stack) == 0 or height[stack[-1]]>=height[i]:             stack.append(i)             i+=1          else:             x = stack[-1]             stack.pop()             if len(stack) != 0:                temp = min(height[stack[-1]],height[i])                dist = i - stack[-1]-1                water += dist*(temp - height[x])       return water ob = Solution() print(ob.trap([2,5,2,0,5,8,8]))

ইনপুট

[2,5,2,0,5,8,8]

আউটপুট

8

  1. গোডাউনে কতগুলো বক্স রাখা যায় তা বের করার পাইথন প্রোগ্রাম

  2. কতগুলো কিউব কাটা হবে সেটা বের করার প্রোগ্রাম

  3. পাইথনে ম্যাট্রিক্সের খালি সেল N টি বেছে নেওয়ার কতভাবে আছে তা চেক করার প্রোগ্রাম

  4. পাইথনে BST-এ নির্দিষ্ট রেঞ্জে থাকা নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম