تعداد راه های قرار دادن اسب در شطرنج - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تعداد راه های قرار دادن اسب در شطرنج

+1 امتیاز

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

سوال شده اردیبهشت 2, 1393  بوسیله ی senator77 (امتیاز 226)   5 14 25
+لازم دارم هرکی بلده هرچی زودتر بگه ممنون میشم
اطلاعات سوال ناقصه

1 پاسخ

+2 امتیاز

سعی کن این جور سوالات رو خودت حل کنی اگر مشکلی جاییش داشتی این جا بپرسی این دفعه رو جواب میدم ولی دفعه بعد اگر سوال به این شکل باشه پاک میشه !

#include <iostream>
#include <vector>

int main ()
{
    std::pair<int,int> p1;
    std::pair<int,int> p2;

    std::cin>>p1.first>>p1.second;//rokh
    std::cin>>p2.first>>p2.second;//asb

    std::cout<<p1.first<<"  "<<p2.second;

    //fill moves
    std::vector<std::pair<int,int>> availableMoves;
    for(int i=1;i<=8;i++)
    {
        for(int j=1;j<=8;j++)
        {
            if(p1.first == i || p1.second == j //hazf satr va sotoon rokh
                    || (p2.second-2 == j && (p2.first == i-1 || p2.first == i+1)) //hazf 2 ta harkat samt chap asb
                    || (p2.second+2 == j && (p2.first == i-1 || p2.first == i+1)) //hazf 2 ta harkat samt rast asb
                    || (j-2==p1.second &&(i-1==p1.first || i+1 == p1.first )) //hazf 2 ta harkat chap asb jadid
                    || (j+2==p1.second &&(i-1==p1.first || i+1 == p1.first )) //hazf 2 ta harkat rast asb jadid
                    || (i == p1.first && j == p1.second) //shart khali boodan
                    || (i == p2.first && j == p2.second) //shart khali boodan
                    )
                continue;
            std::pair<int,int> t;
            t.first=i;
            t.second=j;
            availableMoves.push_back(t);
        }
    }

    //show available moves
    std::cout<<"\nAvailable moves : "<<availableMoves.size()<<"\n" ;
    for(std::pair<int,int>& i:availableMoves)
    {
        std::cout<<i.first<<"  "<<i.second<<"\n";
    }

}

 

پاسخ داده شده اردیبهشت 3, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
ویرایش شده اردیبهشت 3, 1393 بوسیله ی BlueBlade
فکر کنم برنامت درسته ولی نمیدونم چرا ارور میده
چه اروری ؟
ارور که زیاد میده ی بار کامپایل کن خودت میفهمی
کامپایلرت چیه ؟
کامپایلر من == devc++
طبیعیه که ارور بده dev قدیمیه و c++11 رو ساپورت نمی کنه
از یک کامپایلر بروز تر که از c++11 پشتیبانی می کنه مثل
codeblocks ,visual studio استفاده کن
...