АЕ
Анастасия Емельянова

Помогите пожалуйста разобрать задачу по програмированию на C++.

Надо составить программу на языке C++.Помогите пожалуйста. Заранее Благодарен!

ЕТ
Елена Тофан

#include
#include

#define D -1
#define X -2

int main() {
int w, h, bi[80][80], bw[80][80], xb, yb, xe, ye;

std::cin >> w >> h; std::cin.get();
std::fill_n(&bi[0][0], w + 4, X);
std::fill_n(&bi[1][1], w + 2, D);
std::fill_n(&bi[h + 3][0], w + 4, X);
std::fill_n(&bi[h + 2][1], w + 2, D);
bi[1][0] = bi[1][w + 3] = bi[h + 2][0] = bi[h + 2][w + 3] = X;
for (int r = 2; r < h + 2; ++r) {
bi[r][0] = bi[r][w + 3] = X;
bi[r][1] = bi[r][w + 2] = D;
for (int c = 2; c < w + 2; ++c) bi[r][c] = std::cin.get() == 'X' ? X : D;
std::cin.get();
}
std::cin >> xb >> yb >> xe >> ye;
while (xb) {
int l = 0;
bool s, o = false;

for (int r = 0; r < h + 4; ++r) std::copy(bi[r], bi[r] + w + 4, bw[r]);
++xb; ++yb; ++xe; ++ye;
bw[yb][xb] = 0;
do {
s = false;
for (int r = 1; r < h + 3 && !o; ++r) {
for (int c = 1; c < w + 3 && !o; ++c) {
if (bw[r][c] == l) {
if ( ((c == xe) && (r - 1 == ye || r + 1 == ye)) ||
((r == ye) && (c - 1 == xe || c + 1 == xe)) ) {
o = true;
break;
}
if (bw[r - 1][c] == D) { bw[r - 1][c] = l + 1; s = true; }
if (bw[r + 1][c] == D) { bw[r + 1][c] = l + 1; s = true; }
if (bw[r][c - 1] == D) { bw[r][c - 1] = l + 1; s = true; }
if (bw[r][c + 1] == D) { bw[r][c + 1] = l + 1; s = true; }
}
}
}
++l;
} while (s && !o);
std::cout << (o? l : 0) << '\n';
std::cin >> xb >> yb >> xe >> ye;
}
return 0;
}

Похожие вопросы
Задача на програмирование
програмирование на c++
Програмирование в C#
Помогите пожалуйста, не могу решить задачи по програмированию....
Ребята, помогите пожалуйста с тримя задачами по програмированию...
помогите решить задачу по програмированию C#
ПОМОГИТЕ! Надо решить задачу по програмированию!
програмирование язык C
помогите, пожалуйста, разобраться. C#
Помогите разобраться! Какая часть програмирования и за что отвечает?