من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

پاسخ سوال دیوار مهربانی کوئرا

پاسخ سوال دیوار مهربانی کوئرا
پاسخ سوال دیوار مهربانی کوئرا

پاسخ سوال دیوار مهربانی کوئرا

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

 

پاسخ سوال دیوار مهربانی کوئرا

دیواری داریم که به شکل یک مستطیل است. هر خانه از این دیوار یا آجری است یا شیشه‌ای. اگر آجری است،‌ قسمتی از بدنه‌ دیوار و اگر شیشه‌ای شود، قسمتی از پنجره است. پنجره موجودی کاملا شیشه‌ای است که در بین آجرها قرار دارد. یک پنجره را استاندارد می‌گوییم اگر به شکل یک مستطیل شود. هم‌چنین می‌گوییم دو خانه شیشه‌ای در یک پنجره قرار دارند، اگر و تنها اگر، از یکی از آن‌ها بتوان با تعدادی حرکت به خانه دیگر رسید به‌طوری که در هر حرکت به یک خانه شیشه‌ای که با خانه فعلی ضلع مشترک دارد، برویم. در ورودی یک دیوار به شما داده می‌شود که تضمین می‌شود محیط آن کاملا از آجر تشکیل شده است. حال شما باید تشخیص دهید که تمامی پنجره‌های دیوار استاندارد هستند یا خیر.

 

ورودی سوال دیوار مهربانی

در خط اول ورودی به شما دو عدد و  داده می‌شوند که نشان‌دهنده ابعاد دیوار هستند. در امین خط از  خط بعدی، یک رشته به طول m متشکل از + و * آمده است که امین عنصر آن، نشان‌دهنده نوع خانه واقع در تقاطع سطر iام و ستون jام است. اگر این عنصر + شود، نشان‌دهنده وجود پنجره و در غیر این صورت نشان‌دهنده وجود آجر است.

 

خروجی سوال دیوار مهربانی

اگر در دیوار داده شده، پنجره‌ای غیر استاندارد وجود دارد، چاپ کنید bad wall. در غیر این صورت عبارت good wall را خروجی دهید.

 

حل سوال دیوار مهربانی

#include <iostream>
using namespace std;
 
int main()
{
    int n,m;
    cin >> n >> m;
    bool wall[n][m], win;
    string temp;
    for(int i=0; i<n; i++)
    {
        cin >> temp;
        for(int j=0; j<m; j++)
        {
            wall[i][j] = temp[j] == '+';
        }
    }
    
    for(int i=1; i<n; i++)
    {
        win = false;
        for(int j=0; j<n; j++)
        {
            if(wall[i-1][j] && wall[i][j])
            {
                if(!win)
                {
                    win = true;
                    if(j > 0  && wall[i-1][j-1] != wall[i][j-1])
                    {
                        cout << "bad wall";
                        return 0;
                    }
                }
            }
            else
            {
                if(win)
                {
                    win = false;
                    if(wall[i-1][j] != wall[i][j])
                    {
                        cout << "bad wall";
                        return 0;
                    }
                }
            }
        }
    }
    
    cout << "good wall";
}

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

 

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

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

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