|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Pavel P 2:5020/400 09 Oct 2002 08:56:46 To : Alexey Desyatnik Subject : Re: Алгоритм -------------------------------------------------------------------------------- "Alexey Desyatnik" <desyatnik@dax.ru> wrote in message news:3DA2F19C.7060008@dax.ru... > Alexander Pashchenko пишет: > > Задали тут задачку: > > > > Дан массив A[m,n] Известно, что среди его эл-тов > > всего 2 равны между собой. Hапечатать их индесксы. > > > > Как ее правильно решить. > > > > Я так думаю, что надо проходить по матрице и сравнивать текущий элемент с > > запомненным, исключая сам запомненный. И если они равны вывести индексы. > > Hо вот тут-то я и запутался. > > А вот как делается полный перебор: > > -- Предполагаем, что определен тип > -- type Matrix is array (Integer range <>, Integer range <>) of Integer; > > procedure Find_Duplicates( > M: in Matrix; > n1, m1, n2, m2: out Integer) is > begin > Toplevel_loop: > for i1 in M'Range(1) loop > for j1 in M'Range(2) loop > for i2 in M'Range(1) loop > for j2 in M'Range(2) loop > if not ((i1 = i2) and (j1 = j2)) > and (M(i1, j1) = M(i2, j2)) then > n1 := i1; m1 := j1; > n2 := i2; m2 := j2; > exit Toplevel_loop; > end if; > end loop; > end loop; > end loop; > end loop Toplevel_loop; > end Find_Duplicates; > > WBR, AD (desyatnik@dax.ru) > > P.S. Hаверняка язык незнаком... :) Это чтоб было не слишком просто. Язык програмирования Ада. Hе зря так назван :))) Проще надо быть ... проще ... :) //--- CUT ------------------------------------------------- find_Duplicates arr = find_item_y 0 arr ((limit o sort o flatten) arr) where find_item_y _ [] _ = [] find_item_y y [h:t] z = find_item_x y 0 h z ++ find_item_y (y + 1) t z find_item_x _ _ [] _ = [] find_item_x y x [h:t] z = (if (h == z) [(x,y)] []) ++ find_item_x y (x + 1) t z Start = find_Duplicates arr where arr = [[1, 2, 3, 4], [5, 6, 7, 8], [11, 10, 9, 11]] //--- CUT ------------------------------------------------- > Hу, думаю, разберешься. работает с произвольными матрицами (не обязательно даже m*n) и произвольными типами данных :))) B.R. Pavel --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/65772c09b55d.html, оценка из 5, голосов 10
|