Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
InfOlimp_7-lab.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
188.93 Кб
Скачать

Квадрат матрицаны диагоналдарға қатысты өңдеу (тиімді айналым)

Квадрат массивті оның диагодалдарына қатысты өңдеудің жоғарыда келтірілген алгоритмдері аса тиімді емес. Өйткені, оларда массивтің барлық элементтері қарастырылады. Элементтерді қарастыру санын азайту арқылы алгоритмнің тиімділігін едәуір арттыруға болады. Ол үшін ішкі циклдағы басқарушы айнымалының бастапқы немесе соңғы мәнінің сыртқы цикл есептеуішінің мәніне тәуелділігін ендіру керек.

Тиімді тәсілді пайдаланып квадрат матрицаларды диагоналдарына қатысты өңдеу алгоритм-деріне мысалдар келтірейік.

1-мысал. Квадрат массивтің элементтерін 1-лермен келесі суреттегідей етіп толтыру керек:

7.6-кесте

Бас диагоналда жане одан төмен

Бас диагоналда жане одан жоғары

Қосымша диагоналда жане одан төмен

Қосымша диагоналда жане одан жоғары

100000000

110000000

111000000

111100000

111110000

111111000

111111100

111111110

111111111

111111111

011111111

001111111

000111111

000011111

000001111

000000111

000000011

000000001

111111111

111111110

111111100

111111000

111110000

111100000

111000000

110000000

100000000

000000001

000000011

000000111

000001111

000011111

000111111

001111111

011111111

111111111

Бейсик-те:

for i=1 to n

for j=1 to i

x(i,j)=1

next j, i

Паскаль-да:

for i:=1 to n do

for j:=1 to i do

x[i,j]:=1;

Бейсик-те:

for i=1 to n

for j=i to n

x(i,j)=1

next j, i

Паскаль-да:

for i:=1 to n do

for j:=i to n do

x[i,j]:=1;

Бейсик-те:

for i=1 to n

for j=1 to (n-i+1)

x(i,j)=1

next j, i

Паскаль-да:

for i:=1 to n do

for j:=1 to (n-i+1) do

x[i,j]:=1;

Бейсик-те:

for i=1 to n

for j=(n-i+1) to n

x(i,j)=1

next j, i

Паскаль-да:

for i:=1 to n do

for j:=(n-i+1) to n do

x[i,j]:=1;

Бақылау сұрақтары

  • Екі өлшемді массивті өңдеу алгоритмінде i және j циклдік параметрлерінің орнын ауыстырса не болады?

  • Бас диагоналдағы элементтердің индекстерінің тәуелділігі қандай? Қосымша диагоналда ше?

Жаттығулар

  • NxM өлшемді матрицаның әр қатарындағы минимум элементтердің ең үлкенін және әр бағанындағы максимум элементтердің ең кішісін табу керек.

  • 7.2-суретте көрсетілгендей етіп квадрат матрицаларды толтырыңдар:

Сурет 7.2 – Квадрат матрицаларды толтыруға тапсырмалар

«Көбік» әдісімен сұрыптау

Бұл тақырыпта біртипті массивтердің типтік алгоритмдерін өңдеумен танысуды жалғастырамыз типтік алгоритмдердегі массив элементтерін сұрыптаудың олимпиадалық тапсырмаларын қарастырамыз.

Жұмыс мақсаты: танысқан типтік алгоритмдері қолдану арқылы классикалық есептерді шығару.

Сұрыптауды берілген массив элементтерін өсу реті бойынша сұрыптау арқылы қарастырамыз. Мысалы, 5, 8, 4, 9, 3 массивін сұрыптайық:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]