![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 10.02.2007
Сообщений: 14
|
![]()
Путём перестановки элементов квадратной матрицы добиться того,чтобы её максимальный элемент был в левом верхнем углу, следующий по велечине впозиции (2,2) следующий (3,3) и т д
Заполнить так всю главную диагональ. Получается только так: вся главная диагональ забивается максимальным элементом и всё, хоть и делал обнуление максимального после его нахождения и помещения в нужную позицию Использовал вспомогательный массив, хоть это и не желательно (ведь требуется перестановкой изменить его ), иначе вообще нет идей...подскажите что делать?? |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 09.02.2007
Сообщений: 32
|
![]()
Один из вариантов:
Пусть дана матрица с n строками и n столбцами. Надо перебрать все элементы матрицы и найти максимальный. Сначала перебираем все элементы двухмерной матрицы кроме тех которые стоят по диагонале, находим максимальный. Далее продолжаем искать максимальный перебором только тех элементов, которые стоят по диагонале, начиная с k-ого (k в начале равно 1). Получили максимальный элемент матрицы (Запомнили не сам элемент а его координаты i-тою и j-тою по строке и постолбцу). Переставляем местами этот элемент с элементом, который стоит в k-той строке и k-ом столбце. Далее увеличиваем k на единицу. Повторяем всё выше сказанное n раз. И всё готово!
Time have not meaning, mind - this is main...
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 10.02.2007
Сообщений: 14
|
![]()
Что-то не получается у меня вышесказанное закодировать...
Очень прошу код если можно, тупняк у меня. |
![]() |
![]() |
![]() |
#4 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,655
|
![]()
Алгорит достаточно прост.
1) Загоянешь символы в одномерный массив 2) Любым алгоритмом сортировки производишь сортирование символов 3) Перегон осортированного одномерного массива в двумерный массив - матрицу. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 10.02.2007
Сообщений: 14
|
![]()
О, спасибо, а когда обратно загоняешь в двумерный на стадии 3) как заполнив сначала диагональ сделать так, чтобы потом пошло заполнение всего остального кроме диагоналии?
|
![]() |
![]() |
![]() |
#6 | |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,655
|
![]() Цитата:
посмотри набросок, может поможет. счётчик:=колличество клеток в диагонали+1; for i:=1 то длина do begin for j:=1 то длина do begin if i=j tnen goto a; двухмерныймассив[i,j]:=одномерныймассив[счётчик]; счётчик:=счётчик+1; a: end; end; |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 10.02.2007
Сообщений: 14
|
![]()
А если в виде процедуры оформить это, в описании процедуры можно метки использовать?
|
![]() |
![]() |
![]() |
#8 | |
Пользователь
Регистрация: 09.02.2007
Сообщений: 32
|
![]()
a - двухмерная матрица, n - количество строк
Цитата:
Time have not meaning, mind - this is main...
Последний раз редактировалось Time; 10.02.2007 в 23:44. |
|
![]() |
![]() |
![]() |
#9 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,655
|
![]()
в процедуре можно использовать метки. и в функции тоже.
|
![]() |
![]() |
![]() |
#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 |