Опубликован: 21.03.2012 | Доступ: свободный | Студентов: 2972 / 231 | Оценка: 4.44 / 4.19 | Длительность: 06:43:00
Специальности: Программист
Теги:
Лекция 6:
Типовые алгоритмы обработки двумерных массивов
Аннотация: В лекции рассматриваются типовые алгоритмы обработки двумерных массивов. рассмотрены некоторые олимпиадные задачи, которые решаются с использованием этих алгоритмов. Цель лекции: научиться применять изученные типовые алгоритмы при решении классических задач.
Обработку двумерного массива можно условно разделить на три группы:
- Обработка всего массива;
- Обработка отдельно по строкам и столбцам;
- Обработка относительно диагоналей.
Рассмотрим типовые алгоритмы обработки двумерных массивов каждой группы в отдельности.
Обработка всего массива
Типовой алгоритм | Программная реализация (Бейсик) | Программная реализация (Паскаль) |
---|---|---|
Заполнение (порядок обхода элементов двумерного массива - построчно слева направо) |
… for i=1 to n for j=1 to m input x(i,j) next j next i … |
… for i:=1 to n do for j:=1 to m do readln (x[i,j]); … |
Вывод |
… for i=1 to n for j=1 to m print x(i,j);" "; next j print next i |
… for i:=1 to n do begin for j:=1 to m do write (x[i,j], ' '); writeln; end; … |
Сумма, произведение |
… p=1 for i=1 to n for j=1 to m s=s+x(i,j) p=p*x(i,j) next j next i … |
… s:=0; p:=1; for i:=1 to n do for j:=1 to m do begin s:=s+x[i,j]; p:=p*x[i,j]; end … |
Максимальный (минимальный) элемент |
… max=x(1,1) min=x(1,1) for i=1 to n for j=1 to m if x(i,j)>max then max=x(i,j) if x(i,j)<min then min=x(i,j) next j,i |
… max:=x[1,1]; min:=x[1,1]; for i:=1 to n do for j:=1 to m do begin if x[i,j]>max then max:=x[i,j]; if x[i,j]<min then min:=x[i,j]; end … |
Выбор по условию |
… for i=1 to n for j=1 to m if {условие} then {действие} next j next i … |
… for i:=1 to n do for j:=1 to m do if {условие} then {действие} … |
Типовые алгоритмы обработки двумерного массива отдельно по строкам:
Типовой алгоритм | Программная реализация (Бейсик) | Программная реализация (Паскаль) |
---|---|---|
Сумма элементов каждой строки |
… for i=1 to n for j=1 to m s(i)=s(i)+x(i,j) next j next i rem----------------------------------- for i=1 to n print s(i);" "; next |
… for i:=1 to n do s[i]:=0; for i:=1 to n do for j:=1 to m do s[i]:=s[i]+x[i,j]; for i:=1 to n do write (s[i]); … |
Произведение элементов каждой строки |
… for i=1 to n p(i)=1 next rem----------------------------------- for i=1 to n for j=1 to m p(i)=p(i)*x(i,j) next j next i rem----------------------------------- for i=1 to n print p(i);" "; next |
… for i:=1 to n do p[i]:=1; for i:=1 to n do for j:=1 to m do p[i]:=p[i]*x[i,j]; for i:=1 to n do write (p[i]); |
Максимальный (минимальный) элемент каждой строки |
… for i= 1 to n max(i)=x(i,1) min(i)=x(i,1) next rem----------------------------------- for i=1 to n for j=1 to m if x(i,j)>max(i) then max(i)=x(i,j) if x(i,j)<min(i) then min(i)=x(i,j) next j,i rem----------------------------------- for i=1 to n print max(i);" ";; next print for i=1 to n print min(i);" ";; next … |
… for i:= 1 to n do begin max[i]:=x[i,1]; min[i]:=x[i,1]; end; for i:=1 to n do for j:=1 to m do begin if x[i,j]>max[i] then max[i]:=x[i,j]; if x[i,j]<min[i] then min[i]:=x[i,j]; end; for i:=1 to n do write (max[i]); writeln; for i:=1 to n do write (min[i]); … |
Выбор по условию (в каждой строке) |
… for i=1 to n for j=1 to m if {условие} then {rez(i)=…} next j next i rem----------------------------------- for i=1 to n print rez(i);" "; next |
… for i:= 1 to n do begin rez[i]:=0; end; for i:=1 to n do for j:=1 to m do if {условие} then {rez[i]:=…}; for i:=1 to n do write (rez[i]); … |
Типовые алгоритмы обработки двумерного массива отдельно по столбцам:
Типовой алгоритм | Программная реализация (Бейсик) | Программная реализация (Паскаль) |
---|---|---|
Сумма элементов в каждом столбце |
… for j=1 to m for i=1 to n s(j)=s(j)+x(i,j) next i next j rem---------------------------------- for j=1 to m print s(j) next |
… for j:=1 to m do s[j]:=0; for j:=1 to m do for i:=1 to n do s[j]:=s[j]+x[i,j]; for j:=1 to m do write (s[j]); … |
Произведение элементов в каждом столбце |
… for j=1 to m p(j)=1 next rem----------------------------------- for j=1 to m for i=1 to n p(j)=p(j)*x(i,j) next i next j rem----------------------------------- for j=1 to m print p(j) next |
… for j:=1 to m do p[j]:=1; for j:=1 to m do for i:=1 to n do p[j]:=p[j]*x[i,j]; for j:=1 to m do write (p[j]); … |
Максимальный (минимальный) элемент в каждом столбце |
… for j= 1 to m max(j)=x(i,1) next rem------------------------------------ for j=1 to m for i=1 to n if x(i,j)>max(j) then max(j)=x(i,j) next i,j rem------------------------------------ for j=1 to m print max(j);" "; next print for j=1 to m print min(j);" "; next |
… for j:= 1 to m do begin max[j]:=x[i,1]; min[j]:=x[i,1]; end; for j:=1 to m do for i:=1 to n do begin if x[i,j]>max[j] then max[j]:=x[i,j] if x[i,j]<min[j] then min[j]:=x[i,j] end; for j:=1 to m do write (max[j]); writeln; for j:=1 to m do write (min[j]); … |
Выбор по условию (в каждом столбце) |
… for j=1 to m for i=1 to n if {усл.} then {rez(i)=…} next i next j rem------------------------------------ for j=1 to m print rez(j);" "; next |
… for j:= 1 to m do rez[j]:=0; for j:=1 to m do for i:=1 to n do if {усл.} then {rez[i]:=…}; for j:=1 to m do write (rez[j]); … |