|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.12.2007, 03:43 | #1 |
Регистрация: 17.12.2007
Сообщений: 3
|
Задача с матрицей. Ломаю голову уже неделю
Привожу текст задачи без изменений.
Дана числовая матрица M*N. Сохранив без изменения элементы крайних строк и столбцов таблицы, замените каждый внутренний элемент средним арифметическим четырех соседних с ним элементов (сверху, снизу, слева, справа).(Без использования вспомогательного массива) Помогите, пожалуйста с алгоритмом (принципом) решения задачи. Код писать не нужно. Заранее благодарен |
17.12.2007, 07:43 | #2 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Можно и без вспомогательного массива.
1.Создаем массив a[M,N]. 2.В цикле for i:=2 to m-1 do begin for j:=2 to n-1 do begin считаем среднеарифметическое по предложенному условию и заносим данные как бы в виртуальный массив справа от основного: a[i,j+n-1]:=(a[i-1,j]+a[i+1,j]+a[i,j-1]+a[i,j+1])/4; end; end; 3.В таком же цикле заносим полученные данные на "место": a[i,j]:=a[i,j+n-1]; end; end; 4.В цикле for i:=1 to m do begin for j:=1 to n do begin выводим обработанный массив на экран. |
17.12.2007, 14:45 | #3 |
Регистрация: 17.12.2007
Сообщений: 3
|
Идея, конечно, интересная.
Для отмазки конечно сойдёт. Но. Работа достаточно серьёзная. А метод, предложенный Вами обходной. Де-юре все условия соблюдены, де-факто не хочется бесить препода. Судя по другим задачам, есть какой-то красивый метод решения, но пока я его обнаружить не смог. Всё равно спасибо за идею. Если ничего не найду, буду пользоваться этой. |
17.12.2007, 15:24 | #4 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
Покажи пару других задач, может мысль какая придет.
|
17.12.2007, 16:03 | #5 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
В лоб без вспомогательного масссива или в каком либо другом виде временного хранения данных эту задачу не решить. Очевидно здесь какая-то математическая хитрость.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
17.12.2007, 16:19 | #6 |
Пользователь
Регистрация: 28.01.2007
Сообщений: 27
|
Можно по-хитрому:
Код:
|
19.12.2007, 03:20 | #7 |
Регистрация: 17.12.2007
Сообщений: 3
|
А задача всё-таки оказалась не математической а программистской
Это задача на рекурсию. Ниже кусок программы на Паскале, который я только что написал. (Идея не моя, её мне подсказал друг ) i:=2; j:=2; element(i,j); ..... {================================== ===========} procedure element(a,b:integer); var work:real; begin if b=Ncolumn then begin a:=a+1; b:=2; end; work:=(Mas[a-1,b]+Mas[a,b-1]+Mas[a+1,b]+Mas[a,b+1])/4; if not((b=2)and(a=Mrow)) then begin element(a,b+1); Mas[a,b]:=work; end; end; {================================== ===========} |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача,опять же с матрицей | groth88 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 16.04.2008 13:22 |
Задача с матрицей | H[o][o]K | Помощь студентам | 1 | 15.12.2007 16:51 |
Задача с матрицей на Delphi | POPOV | Помощь студентам | 28 | 29.10.2007 06:39 |
Задача с матрицей(нужна помощь) | VDK23RUS | Помощь студентам | 5 | 14.06.2007 12:55 |
Задача с матрицей, Паскаль | Integra | Помощь студентам | 1 | 25.04.2007 16:14 |