پاسخ سوال مساحت محصور + کوئرا

پاسخ سوال مساحت محصور + کوئرا
پاسخ سوال مساحت محصور + کوئرا

پاسخ سوال مساحت محصور + کوئرا

در این نوشته تمرین “سوال مساحت محصور” که در وبسایت کوئرا موجود می باشد را برای شما کاربران عزیز حل کرده ایم.

 

در مورد سایت کوئرا بیشتر بخوانید…

 

تمرین مساحت محصور + جاوا

تعدادی تخته با شماره‌های ۱ تا  در کنار هم داده شده است. ارتفاع تخته‌ی iام h_i متر و عرض آن ۱ متر است. می‌خواهیم مستطیل با بیشترین مساحت محصور بین این n تخته را بیابیم. منظور از مستطیل محصور بین تخته‌ها، مستطیلی است که سطح آن تماماً درون تخته‌ها قرار گیرد.

 

ورودی سوال مساحت محصور

در خط اول ورودی عدد  و در خط بعد n عدد صحیح نامنفی داده می‌شود که عدد iام نشان‌دهنده‌ی ارتفاع تخته‌ی ام است.

 

خروجی سوال مساحت محصور

در تنها خط خروجی باید مساحت مستطیل خواسته شده را چاپ کنید.

 

حل سوال مساحت محصور (به زبان برنامه نویسی جاوا)

import java.util.Stack;
import java.util.Scanner;
 
public class Main
{
 
    static int getMaxArea(int hist[], int n)  
    { 
 
        Stack<Integer> s = new Stack<>(); 
        
        int max_area = 0; 
        int tp; 
        int area_with_top; 
        int i = 0; 
        while (i < n) 
        { 
            if (s.empty() || hist[s.peek()] <= hist[i]) 
                s.push(i++); 
            
            else
            { 
                tp = s.peek();  
                s.pop();  
                
                area_with_top = hist[tp] * (s.empty() ? i : i - s.peek() - 1); 
                
                if (max_area < area_with_top) 
                    max_area = area_with_top; 
            } 
        } 
 
        while (s.empty() == false) 
        { 
            tp = s.peek(); 
            s.pop(); 
            area_with_top = hist[tp] * (s.empty() ? i : i - s.peek() - 1); 
            
            if (max_area < area_with_top) 
                max_area = area_with_top; 
        } 
        
        return max_area; 
        
    } 
    
    public static void main(String[] args)  
    { 
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int[] arr = new int[n];
        
        for(int i = 0; i < n; i++){
            arr[i] = input.nextInt();
        }
        
        System.out.println(getMaxArea(arr, arr.length)); 
    } 
}

 

منبع سوال : وبسایت کوئرا

 

اگر روش حل بهتری برای “مساحت محصور” دارید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم.

اگر سوال خاصی را مدنظر دارید در بخش نظرات برای ما ارسال کنید تا حل آن سوال را در الویت محتوای سایت بگذاریم.

موفق باشید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]