|
|
|
|
|
для: Guest
(21.11.2005 в 17:23)
| | а вот вы бы целиком задачи выкладывали..почему тока куски?=)
зы на с++ | |
|
|
|
|
автор: Guest (21.11.2005 в 21:06) |
|
|
для: Киналь
(21.11.2005 в 19:38)
| | Ну на паскале и я в своё время это считал, а тут захотелось на php.Вообще енту задачу предлагают для решения на C++ в качестве домашнего задания для студентов фак-та ПМиК ТвГУ. | |
|
|
|
|
|
|
|
для: Guest
(21.11.2005 в 17:23)
| | Матрица маленькая не развернуться :))), если матрица огромная и многомерная такие задачи решают при помощи градиентного спуска со случайным выбором начальной позиции. Причём в реальных условиях последнее часто не требуется, так как заранее известно что ищется...
Например, помнится в стародавние времена когда занимался квантово-химическим расчётом молекул, так там каждая точка многомерной матрицы фокиана могла считаться несколько часов или суток - поэтому молекулу стрались забросить как можно ближе к локальному минимуму, благо их у нормальных молекул не много - с нежёсткими комплексами, у кторых их может быть сотни никто и не связывается...
Да и от реальной задачи часто зависит - если матрица набита случайным образом - одно дело, если это функция - другое... Если резкие скачки или поверхность непрерывная... Абстрактный алгоритм для произвольной матрицы будет не лучшим решением для какого-то специального случая. | |
|
|
|
|
|
|
|
для: Guest
(21.11.2005 в 17:23)
| | Можно попробовать перебирать строки - искать минимум каждой и уже его проверять на соседей. Если дело происходит не в Паскале, то это можно сделать встроенной функцией=)
Ну а со вторым пунктом вообще просто - 2 вложенных цикла, типа
For i:=1 to n do
For j=i+1 to n do
|
Ох, сколько этих матриц на Паскале считали=))) | |
|
|
|
|
автор: Guest (21.11.2005 в 18:33) |
|
|
для: Axxil
(21.11.2005 в 17:59)
| | Ну да вот, я тоже тупо обходил все элементы, но это мне не очень понравилось, а вдруг будет задача в которой необходимо сравнивать не просто элемент с соседями, а еще с 20 (например) элементами? Это уже долго больно писать и тупо... :) А главная диагональ строится из левого верхнего угла в правый нижний. Второстепенная диагональ - из верхнего правого в нижний левый. | |
|
|
|
|
|
|
|
для: Guest
(21.11.2005 в 17:23)
| | Давайте сначала алгоритм обсудим.
1.Первое что приходит на ум обойти все элементы и тупо искать этот самый минимум поочереди сравнивая с соседними элементами.
Запрограмировать это 10 минут
Но подозреваю что есть более элегантный алгоритм.
(Честно: думал 10 сек :) )
2. А главная диагональ строится из какого угла матрицы? | |
|
|
|
|
|
|
|
для: Guest
(21.11.2005 в 17:23)
| | Даже пытаться не буду :)) Меня от одного слова матрица трясет! | |
|
|
|
|
автор: Guest (21.11.2005 в 17:23) |
|
| Любите решать задачи по программированию? :) Вообщем предлагаю маленькую и простенькую задачку. Я ее решил, но уж больно у меня код некрасивый получился. Потому и хочу чтоб вы(посетители форума) тоже попробовали, может кто-нибудь ее решит идеально(или близко :)) Я бы с удовольствием посмотрел красивое решение
Задача:
Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей
1) Подсчитать количество локальных минимумов заданной матрицы 10 на 10 (Можно матрицу зарандомить)
2) Найти сумму модулей элементов, расположенных выше главной диагонали. | |
|
|
|
|