پاسخ سوال نعلم کو؟! + کوئرا

پاسخ سوال نعلم کو؟! + کوئرا
پاسخ سوال نعلم کو؟! + کوئرا

پاسخ سوال نعلم کو؟! + کوئرا

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

 

 

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

 

تمرین نعلم کو؟! کوئرا + سی پلاس پلاس

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

پای اسب بهروز کمی عجیب و غریب است و نعل اسبش شکل یک مربع 3*3 که دو خانه مجاور ضلعی از محیط آن به همراه مرکزش برداشته شده است. در شکل زیر حالت کلی نعل اسب را می‌بینیم که با خانه‌های سیاه مشخص شده است(دقت کنید که ممکن است مکان نعل اسب دوران‌ها و تقارن‌هایی از شکل زیر نیز باشد).

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

ورودی سوال نعلم کو؟!

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

در امین سطر از n سطر بعدی یک رشته به طول m متشکل از حروف . و * آمده است. حرف . نشان‌دهنده خانه خالی و حرف * نشان‌دهنده علوفه است.

 

خروجی سوال نعلم کو؟!

در تنها سطر خروجی، پاسخ مسئله را چاپ کنید.

 

حل سوال نعلم کو؟! (به زبان برنامه نویسی سی پلاس پلاس)

#include <iostream>
using namespace std;

int main()
{
    int n, m;
    cin >> n >> m;
    string mazrae[n];

    for(int i=0; i<n; i++)
        cin >> mazrae[i];
    
    int t = 0, nn, mm;
    int circle[8][2] = {{0,0}, {0,1}, {0,2}, {1,2}, {2, 2}, {2, 1}, {2, 0}, {1, 0}};

    for(int i=0; i<n-2; i++)
    {
        for(int j=0; j<m-2; j++)
        {
            int motavali = 0;
            for(int k=0; k<13; k++)
            {
                nn = i + circle[(k%8)][0];
                mm = j + circle[(k%8)][1];
                if(mazrae[nn][mm] == '*')
                {
                    if(++motavali >= 6)
                        t++;
                }
                else
                    motavali = 0;
            }
        }
    }
    
    cout << t << endl;
    system("pause");
    return 0;
}

 

 

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

 

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

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

موفق باشید.

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