Главная страница
    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.46 MB
Время: 0.056 c
2-1161201316
Meganop
2006-10-18 23:55
2006.11.05
Вопрос про массив.


15-1161271126
GanibalLector
2006-10-19 19:18
2006.11.05
Microsoft выпустила IE7


15-1160948986
Германн
2006-10-16 01:49
2006.11.05
Прошу у ДМ помощи


2-1161337013
svt
2006-10-20 13:36
2006.11.05
access 2.0


2-1161235080
pathfinder
2006-10-19 09:18
2006.11.05
TMemIniFile...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский