| Всех приветствую! Делаю задание на C++ Builder 6: найти кратчайший путь в лабиринте от текущего положения до выхода. Лабиринт сделал через StringGrid, где '0' – пустая область, куда можно делать ход, '1' — препятствие. Расставил препятствия вручную, так как иначе можно получить тупиковую ситуацию. Ячейка 1А — начало лабиринта, 5Е — выход. Минимальный путь — 2B, 3C, 4D. Максимальный — 2B, 1B, 1C, 1D, 1E, 2E, 3E, 4E. После нахождения кратчайшего пути заголовку Label присваивается координаты ячеек, входящих в этот самый путь. Понятно, чтобы найти минимальный маршрут, нужно организовать цикл с использованием алгоритма (например, волнового). С этим у меня и возникли проблемы. Примерно как работают алгоритмы мне понятно, но вот с реализацией проблема. Возможно, программирование не для меня или сказывается маленький опыт. От не понимания, что делать дальше, посмотрел как суммировать значения всех ячеек. Надеюсь, кто-нибудь подскажет как быть дальше. С уважением, Сергей.
// создание лабиринта
Form1->StringGrid1->Cells[0][0]='0'; //start
Form1->StringGrid1->Cells[4][4]='0'; //finish
Form1->StringGrid1->Cells[1][0]='0'; //long way
Form1->StringGrid1->Cells[1][1]='0'; //short way
Form1->StringGrid1->Cells[1][2]='1';
Form1->StringGrid1->Cells[1][3]='1';
Form1->StringGrid1->Cells[1][4]='1';
Form1->StringGrid1->Cells[2][0]='0'; //l
Form1->StringGrid1->Cells[2][1]='1';
Form1->StringGrid1->Cells[2][2]='0'; //s
Form1->StringGrid1->Cells[2][3]='1';
Form1->StringGrid1->Cells[2][4]='1';
Form1->StringGrid1->Cells[3][0]='0'; //l
Form1->StringGrid1->Cells[3][1]='1';
Form1->StringGrid1->Cells[3][2]='1';
Form1->StringGrid1->Cells[3][3]='0'; //s
Form1->StringGrid1->Cells[3][4]='1';
Form1->StringGrid1->Cells[4][0]='0'; //l
Form1->StringGrid1->Cells[4][1]='0'; //l
Form1->StringGrid1->Cells[4][2]='0'; //l
Form1->StringGrid1->Cells[0][1]='1';
Form1->StringGrid1->Cells[0][2]='1';
Form1->StringGrid1->Cells[0][3]='1';
Form1->StringGrid1->Cells[0][4]='1';
Form1->StringGrid1->Cells[4][3]='0'; //l
// суммирование значений всех ячеек
int summa = 0;
for(int i = 0; i < StringGrid1->ColCount; i++)
for(int j = 0; j < StringGrid1->RowCount; j++)
summa += StrToInt(StringGrid1->Cells[i][j]);
Label12->Caption=summa;
|
| |