Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Фрагмент программы. освобождаем for i:=N downto L do {для каждой перемещаемой строки }Begin L:=I; jm:=j end; освобождаем for i:=N downto L do {для каждой перемещаемой строки } строку L for j:=1 to N do {для каждого столбца очередной строки} a[i+1,j]:=a[I,j]; for j:=1 to N do [L,j]:=b[j];{вставка массива В} Примечание.При вставке столбца действовать аналогично, но перемещать столбцы. При удалении строк/столбцов нужно затереть элементы удаляемой строки/столбца. Это будет осуществляться перемещением строк/столбцов, имеющих большие номера, т.е. в обозначениях примера – от L до N. Перестановка элементов Пример. Дана квадратная матрица А(N,N) натуральных чисел. Повернуть ее относительно центра симметрии на 90° по часовой стрелке. Решение. Это пример на преобразование матрицы. В задачах такого типа необходимо выявить закономерность перебора элементов. Для этого нужно нарисовать матрицу и детально расписать процесс преобразования. Рассмотрим матрицу 6*6.
Здесь 6 – это значение N. Причем для строки №1 значение J изменяется от 1 до 5. Причем заметим, что при перемещение одного элемента вместе с ним перемещаются на новые места еще 3. Т.о., за одно перемещение мы будем ставить на место сразу 4 элемента. Поэтому перебирать нужно не все элементы матрицы, а четвертую часть от их полного количества. Элемент 1,6 перемещать не нужно, т.к. он уже перемещен. Строка №2 (перемещаются выделенные элементы): 2,2 ® 2,5 ® 5, 5 ® 5, 2 ® 2,2 2,3 ® 3,5 ® 5, 4 ® 4, 2 ® 2,3 2,4 ® 4,5 ® 5, 3 ® 3, 2 ® 2,4 Итого: 2,j ® j,5 ® 5,6-j+1® 6-j+1,2® 2,j Причем для строки №2 значение J изменяется от 2 до 4, 6 – это значение N. Строка №3: 3,3 ® 3,4 ® 4,4 ® 4,3 ® 3,3 Итого: 3,j ® j,4 ® 4,6-j+1® 6-j+1,3® 3,j Причем для строки №3 значение J изменяется от 3 до 3, 6 – это N. Остальные элементы занимают свои места в процессе перемещения выделенных на рисунке. Если организовать перебор только выделенных на рисунке строк и для каждого из них организовать перемещение, то вся матрица будет повернута. Сопоставим итоговые строки для выявления закономерности: 1,j ® j,6 ® 6,N-j+1 ® N-j+1,1 ® 1,j 2,j ® j,5 ® 5,N-j+1 ® N-j+1,2 ® 2,j 3,j ® j,4 ® 4,N-j+1 ® N-j+1,3 ® 3,j I,j ® j,N-i+1® N-i+1,N-j+1 ® N-j+1,I ® I,j Т.о., строки I перебираются от 1 до 3 (N div 2), а для каждой строки перебираются элементы от I до N – I . Перебор выделенных элементов описывается двумя вложенными циклами. Перемещение будем начинать с элемента А[I,J]. Его присвоим дополнительной переменной d: d:=a[I,j]; Теперь место A[I,J] свободно. Поэтому следующим действием присвоим элементу A[I,J] значение элемента [J,N-I+1]: a[I,j]:=a[n-j+1,i]; Теперь свободно место A[J,N-I+1]. Поэтому следующее действие: Далее аналогичные действия для A[N-I+1,N-J+1]: Последнее действие – это поставить значение элемента А[I,J], которое находится в d, на место A[J,N-I+1]: a[j,n-i+1]:=d; for i:=1 to N div 2 do {для каждой выделенной строки матрицы} for j:=i to N-i do {для выделенного столбца очередной строки}
Дата добавления: 2014-03-11; просмотров: 307; Нарушение авторских прав Мы поможем в написании ваших работ! |