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

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

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

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

 

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

 

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

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

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

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

 

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

در خط اول ورودی به شما دو عدد و  داده می‌شوند که نشان‌دهنده ابعاد دیوار هستند.

در امین خط از  خط بعدی، یک رشته به طول 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]