Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2017, 18:47   #1
Pascal2015
 
Регистрация: 13.01.2016
Сообщений: 6
По умолчанию [C#] Задача по нахождению кратчайшего пути короля на шах.доске

Вход в программу включает следующие условия в заданом порядке:
-ряд препятствий
-координаты отдельных препятствий (пара чисел в диапазоне 1..8)
-начальные координаты
-координаты заданной цели (ячейки)
Количество препятствий записывается на отдельной строке, координаты всегда записаны как пары чисел в одной строке, разделенные пробелом.
Выход будет -1 , если король не может дойти к заданной цели, или количество шагов которые он должен выполнить
Для решения этой задачи желательно использовать алгоритм поиска в ширину/глубину


Пример ввода:
1
2 1
1 1
2 2
Соответствующие выход (ответ):

1

Заранее благодарю
Pascal2015 вне форума Ответить с цитированием
Старый 22.05.2017, 19:26   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

покажите свои наработки, конкретные вопросы и т.п.

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.05.2017, 21:09   #3
Pascal2015
 
Регистрация: 13.01.2016
Сообщений: 6
По умолчанию может ктото переписать этот код с++ в с# добавив в него условие из вышеописанной задачи

Код:
#include <algorithm>
#include <complex>
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
typedef int                             T_coord;
typedef std::complex    < T_coord   >   T_cell;
///////////////////////////////////////////////////////////////////////////////
struct  T_rect
{
    //-------------------------------------------------------------------------
    char    name_symb_;
    T_cell  lower_left_;
    T_cell  top_right_;
    //-------------------------------------------------------------------------
    T_rect( char    name_symb )
        :
        name_symb_  ( name_symb )
    {}
    //-------------------------------------------------------------------------
    void    input()
    {
        std::cout   <<  "\nEnter cells of rectangle "
                    <<  name_symb_
                    <<  " in form (1,2)"
                    <<  std::endl;
 
        std::cout   <<  "\tlower left\t: ";
        std::cin    >>  lower_left_;
 
        std::cout   <<  "\ttop right_\t: ";
        std::cin    >>  top_right_;
    }
    //-------------------------------------------------------------------------
    int     king_dist_to( T_rect    const   &   r )
    {
        bool    this_left   =       lower_left_     .real()
                                <=  r.lower_left_   .real();
 
        bool    this_lower  =       lower_left_     .imag()
                                <=  r.lower_left_   .imag();
 
        auto    rect_left   =   *this;
        auto    rect_right  =   r;
 
        auto    rect_lower  =   *this;
        auto    rect_top    =   r;
 
        if( !this_left  )   { std::swap     ( rect_left,    rect_right  );  }
        if( !this_lower )   { std::swap     ( rect_lower,   rect_top    );  }
 
        auto    dist_horiz  =       rect_right  .lower_left_    .real()
                                -   rect_left   .top_right_     .real();
 
        auto    dist_vert   =       rect_top    .lower_left_    .imag()
                                -   rect_lower  .top_right_     .imag();
 
        dist_horiz          =   std::max( dist_horiz,   0 );
        dist_vert           =   std::max( dist_vert,    0 );
 
        return  std::max    (
                                dist_horiz,
                                dist_vert
                            );
    }
    //-------------------------------------------------------------------------
};
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    T_rect  A('A');
    T_rect  B('B');
 
    A.input();
    B.input();
 
    std::cout   <<  A.king_dist_to(B)
                <<  std::endl;
}
Pascal2015 вне форума Ответить с цитированием
Старый 22.05.2017, 21:12   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Чот не очень похоже на C#.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.05.2017, 21:48   #5
Pascal2015
 
Регистрация: 13.01.2016
Сообщений: 6
По умолчанию

код написан на с++ а нужно переписать его на с# в соответствии с вышеуказанными условиями
Pascal2015 вне форума Ответить с цитированием
Старый 22.05.2017, 21:59   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так переводите, раз нужно.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск кратчайшего пути в графе zokwild Помощь студентам 0 30.11.2012 18:22
Нахождение кратчайшего пути Grime Microsoft Office Excel 6 06.06.2012 08:46
Нахождение кратчайшего пути в графе Nata220 Помощь студентам 4 29.11.2010 14:54
поиск кратчайшего пути LENA_M Общие вопросы C/C++ 0 29.05.2010 22:15
Поиск пути на шахматной доске ходом ферзя A!eI{S@nDrA Помощь студентам 2 16.06.2009 09:51