Дистанционная подготовка: optimization
optimization
от Nurlibek Aimagambetov - Пятница 28 Ноябрь 2014, 18:16
161. Один конь
  Hello.
Please, answer how can I shorten my code?
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include
# include

#define mp make_pair

using namespace std;

typedef long long ll;

ll n;
vectorg[21][21];
ll d[21][21];
pair p[21][21];

void work(ll x,ll y,ll a,ll b)
{
if (x>=0&&x=0&&y>n;
ll x1,x2,y1,y2;
cin>>x1>>y1>>x2>>y2;
--x1,--y1,--x2,--y2;
for(ll i=0;i
Re: optimization
от Peter Cherepanov - Пятница 28 Ноябрь 2014, 22:13
  Есть много способов. Один программист-практик утверждал, что любую программу можно сократить на 1 строчку не изменяя результата.

В вашем случае я бы прежде всего выкинул C++ .
Достижимые поля можно представить 64-битовым вектором, который помещается в тип long long. Значит, массивы не нужны вообще.
Далее, опрерациями сдвига и логического сложения можно найти достижимые поля после каждого шага.
И продолжать так, пока конечное поле не будет достигнуто.

По сути, такая программа моделирует недетерминированный автомат, который принимает множество состояний сразу.

Похожее решение выбрано как лучшее решение для задачи № 163. "Два коня". Решите ее любым способом и смотрите решение.