Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Вниз

Как из A(x1,y1) в B(x2,y2) в StringGrid?   Найти похожие ветки 

 
abba   (2006-10-22 21:29) [0]

Лабиринт задан в виде матрицы размером n на m. Стенам лабиринта соответствуют единицы, проходам - нули. Определить, можно ли из точки с координатами (i1, j1) попасть в точку с координатами (i2, j2).
Спасибо.


 
Kolan ©   (2006-10-22 21:33) [1]

> [0] abba   (22.10.06 21:29)
> Лабиринт задан в виде матрицы размером n на m. Стенам лабиринта
> соответствуют единицы, проходам - нули. Определить, можно
> ли из точки с координатами (i1, j1) попасть в точку с координатами
> (i2, j2).
> Спасибо.


Метод равных цен. Есть программка - лаба с соответствующим качеством :)


 
Kolan ©   (2006-10-22 21:34) [2]

300kB Могу дать :)


 
abba   (2006-10-22 21:35) [3]

Было бы неплохо
Tolikmor@tut.by


 
abba   (2006-10-22 21:36) [4]

А этот метод равных цен использует рекурсию?


 
Kolan ©   (2006-10-22 21:37) [5]

http://www.fvt.rsu.ru/index.php?page=student&selection=main&navigation=help_kfield&topic=help

Вспомнил, даже статью сдела про неё(для её части) для одногрупников. Во.. делать нечего было :)


 
Kolan ©   (2006-10-22 21:39) [6]

Послал, за качество не пинать...

> А этот метод равных цен использует рекурсию?

А как же.


 
abba   (2006-10-22 21:40) [7]

Спасибо


 
Kolan ©   (2006-10-22 21:42) [8]

Да, чтобы был лабиринт там надо кое-что подправить.. Точно делал. Надо чтобы клетки с "0" были такогоже типа что и окоймление.

Те свойство:

property CellType: TCellType read FCellType write FCellType;

Должно быть:

TCellType =
   (
     ctUsualCell,
     ctBorder,
     ctSelected,
     ctSelectedStart,
     ctSelectedEnd

ЗЫ
 Все по памяти...
   );


 
Kolan ©   (2006-10-22 22:14) [9]

О исправил:

Было:
 NewField(10, 10, 100);

Стало:
 NewField(10, 10, 2);

И добавить:
procedure TCustomField.InitializeFieldWithRandomRanges(Range: Integer);
var
 I, J: Integer;
begin
 Randomize;
 for I := Low(FCells) to High(FCells) do
   for J := Low(FCells[I]) to High(FCells[I]) do
   begin
     FCells[I, J].Data := Random(Range);
     FCells[I, J].Coordinates := Point(I, J);
     if (I = 0) or (J = 0) or (I = FRowCount - 1) or (J = FColCount - 1) then
     begin
       FCells[I, J].CellType := ctBorder;
       FCells[I, J].Data := -1;
     end;
     if FCells[I, J].Data = 0 then
       FCells[I, J].CellType := ctBorder;

   end;
end;


 
Loginov Dmitry ©   (2006-10-22 23:09) [10]

http://kladovka.net.ru/download.cgi?id=239

Задачу выполнит на 100%. Только без StringGrid"ов %)


 
TUser ©   (2006-10-23 07:42) [11]

См. алгоритм Дейкстры

Для твоей задачи примерно так
all flags := false;
flags[A] := true;
for each cell do
 for each cell do // да раза, это не опечатка
   if not flags[this cell] then
     for each acell do
       if flags[acell] and (acell рядом с cell) then
         flags[cell] = true
return flags[B]

+ очевидная оптимизация



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.045 c
15-1160170272
Альберт
2006-10-07 01:31
2006.11.05
смена иконки скомпилированной программы


1-1159163057
oleg__
2006-09-25 09:44
2006.11.05
Код нажатой клавиши


15-1160644299
Desdechado
2006-10-12 13:11
2006.11.05
Пара вопросов по VS 2005


15-1160080323
Cyrax
2006-10-06 00:32
2006.11.05
Итераторы в Delphi


15-1160558202
Crazy monkey
2006-10-11 13:16
2006.11.05
Проблемы с загрузкой музыки на mp3 плеер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский