|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.02.2007, 20:59 | #1 |
Пользователь
Регистрация: 10.02.2007
Сообщений: 14
|
Двумерный массив help
Путём перестановки элементов квадратной матрицы добиться того,чтобы её максимальный элемент был в левом верхнем углу, следующий по велечине впозиции (2,2) следующий (3,3) и т д
Заполнить так всю главную диагональ. Получается только так: вся главная диагональ забивается максимальным элементом и всё, хоть и делал обнуление максимального после его нахождения и помещения в нужную позицию Использовал вспомогательный массив, хоть это и не желательно (ведь требуется перестановкой изменить его ), иначе вообще нет идей...подскажите что делать?? |
10.02.2007, 22:19 | #2 |
Пользователь
Регистрация: 09.02.2007
Сообщений: 32
|
Один из вариантов:
Пусть дана матрица с n строками и n столбцами. Надо перебрать все элементы матрицы и найти максимальный. Сначала перебираем все элементы двухмерной матрицы кроме тех которые стоят по диагонале, находим максимальный. Далее продолжаем искать максимальный перебором только тех элементов, которые стоят по диагонале, начиная с k-ого (k в начале равно 1). Получили максимальный элемент матрицы (Запомнили не сам элемент а его координаты i-тою и j-тою по строке и постолбцу). Переставляем местами этот элемент с элементом, который стоит в k-той строке и k-ом столбце. Далее увеличиваем k на единицу. Повторяем всё выше сказанное n раз. И всё готово!
Time have not meaning, mind - this is main...
|
10.02.2007, 22:33 | #3 |
Пользователь
Регистрация: 10.02.2007
Сообщений: 14
|
Что-то не получается у меня вышесказанное закодировать...
Очень прошу код если можно, тупняк у меня. |
10.02.2007, 22:38 | #4 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,600
|
Алгорит достаточно прост.
1) Загоянешь символы в одномерный массив 2) Любым алгоритмом сортировки производишь сортирование символов 3) Перегон осортированного одномерного массива в двумерный массив - матрицу. |
10.02.2007, 22:42 | #5 |
Пользователь
Регистрация: 10.02.2007
Сообщений: 14
|
О, спасибо, а когда обратно загоняешь в двумерный на стадии 3) как заполнив сначала диагональ сделать так, чтобы потом пошло заполнение всего остального кроме диагоналии?
|
10.02.2007, 23:32 | #6 | |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,600
|
Цитата:
посмотри набросок, может поможет. счётчик:=колличество клеток в диагонали+1; for i:=1 то длина do begin for j:=1 то длина do begin if i=j tnen goto a; двухмерныймассив[i,j]:=одномерныймассив[счётчик]; счётчик:=счётчик+1; a: end; end; |
|
10.02.2007, 23:41 | #7 |
Пользователь
Регистрация: 10.02.2007
Сообщений: 14
|
А если в виде процедуры оформить это, в описании процедуры можно метки использовать?
|
10.02.2007, 23:42 | #8 | |
Пользователь
Регистрация: 09.02.2007
Сообщений: 32
|
a - двухмерная матрица, n - количество строк
Цитата:
Time have not meaning, mind - this is main...
Последний раз редактировалось Time; 10.02.2007 в 23:44. |
|
10.02.2007, 23:43 | #9 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,600
|
в процедуре можно использовать метки. и в функции тоже.
|
10.02.2007, 23:48 | #10 |
Пользователь
Регистрация: 10.02.2007
Сообщений: 14
|
А вот это, с использованием буферной памяти, какраз то что нужно!
Благодарю, грамотный ход. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двумерный Массив | n01R | Помощь студентам | 9 | 19.12.2009 16:41 |
Двумерный массив... | slim5 | Помощь студентам | 2 | 20.06.2008 23:16 |
Двумерный массив в С++ | Draid | Помощь студентам | 2 | 07.03.2008 22:06 |
Двумерный массив | Jodu | Помощь студентам | 18 | 05.12.2007 22:44 |