Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
00466.docx
Скачиваний:
24
Добавлен:
13.11.2022
Размер:
941.8 Кб
Скачать

Типовые алгоритмы формирования групп:

Размещения с повторениями:

Программная реализация на Бейсике

for i=1 to n

for j=1 to n

print A(i), A(j);

next j, i

Программная реализация на Паскале

for i:=1 to n do

for j:=1 to n do

writeln (A[i], A[j]);

Размещения без повторений:

Программная реализация на Бейсике

for i=1 to n

for j=1 to n

if i<>j then print A(i), A(j);

next j,i

Программная реализация на Паскале

for i:=1 to n do

for j:=1 to n do

if i<>j then writeln (A[i], A[j]);

Сочетания с повторениями:

Программная реализация на Бейсике

...

for i=1 to n

for j=i to n

print A(i,j);

next j, i

Программная реализация на Паскале

...

for i:=1 to n do

for j:=i to n do

writeln (A[i], A[j]);

Сочетания без повторений:

Программная реализация на Бейсике

...

for i=1 to n-1

for j=i+1 to n

print A(i), A(j);

next j, i

Программная реализация на Паскале

...

for i:=1 to n-1 do

for j:=i+1 to n do

writeln (A[i], A[j]);

Задача "Кодовый замок сейфа"

Из 10 букв нужно набрать 3. Повторение букв допустимо. Подсчитать количество возможных комбинаций кодов.

Идея решения: Необходимо применить типовой алгоритм формирования групп РАЗМЕЩЕНИЯ С ПОВТОРЕНИЯМИ.

Программа на Бейсике

dim a$(10)

for i=1 to 10

input "введите букву"; a$(i)

next

for х1=1 to 10

for х2=1 to 10

for х3=1 to 10

print a$(х1); a$(х2); a$(х3);

k=k+1

next x3,x2,x1

print "k="; k

Программа на Паскале:

var a: array [1.10] of char;

x1, x2, x3, k, i: integer;

begin

for i:=1 to 10 do

readln (a[i]);

for х1:=1 to 10 do

for х2:= 1 to 10 do

for х3:=1 to 10 do

begin

writeln (a[х1], a[х2], a[х3]);

k:=k+1;

end;

writeln ('k:=', k);

end.

Тест:

Результат:

1000

Задача

В ассортименте кондитерской сегодня 10 видов пирожных. Каких три пирожных продавец может предложить покупателю?

Идея решения: Необходимо применить типовой алгоритм формирования групп СОЧЕТАНИЯ С ПОВТОРЕНИЯМИ.

Программа на Бейсике

dim a$ (10)

for i=1 to 10

input "введите название пирожного"; a$ (i)

next

for х1=1 to 10

for х2=1 to 10

for х3=1 to 10

print a$(х1); a$(х2); a$(х3)

next x3,x2,x1

Программа на Паскале:

var a: array [1.10] of string;

x1, x2, x3, i: integer;

begin

for i:=1 to 10 do

begin

writeln ('введите название пирожного');

readln (a[i]);

end;

for х1:=1 to 10 do

for х2:= 1 to 10 do

for х3:=1 to 10 do

writeln (a[х1], a[х2], a[х3]);

end.

Задачи из "Теории чисел"

Найти все трехзначные числа, сумма цифр которых равна К (введенному с клавиатуры).

Идея решения: Необходимо применить типовой алгоритм формирования групп РАЗМЕЩЕНИЯ С ПОВТОРЕНИЯМИ.

Программа на Бейсике

Input "k="; k

for х1=1 to 9

for х2= 0 to 9

for х3=0 to 9

if х1+х2+х3=k then print х1; х2; х3

next x3,x2,x1

Программа на Паскале:

var x1, x2, x3, k: integer;

begin

writeln ('k=');

readln (k);

for х1:=1 to 9 do

for х2:=0 to 9 do

for х3:=0 to 9 do

if х1+х2+х3=k then

writeln (х1, х2, х3);

end.

Тест:

Дано:

3

Результат:

102

111

120

201

210

300

Подсчитать количество "счастливых" троллейбусных билетов ("счастливые" номера билетов - шестизначные числа, в которых сумма первых трех цифр равна сумме вторых трех цифр).

Идея решения: Необходимо применить типовой алгоритм формирования групп РАЗМЕЩЕНИЯ С ПОВТОРЕНИЯМИ.

Программа на Бейсике:

for х1=1 to 9

for х2=0 to 9

for х3=0 to 9

for х4=0 to 9

for х5=0 to 9

for х6=0 to 9

if x1+x2+x3=x4+x5+x6 then k=k+1

next x6, x5, x4, x3, x2, x1

print "k="; k

Программа на Паскале:

var x1, x2, x3, k: integer;

begin

k:=0;

for х1:=1 to 9 do

for х2:=0 to 9 do

for х3:=0 to 9 do

for х4:=0 to 9 do

for х5:=0 to 9 do

for х6:=0 to 9 do

if x1+x2+x3=x4+x5+x6 then k:=k+1;

writeln ('k=', k);

end.

Тест:

Результат:

46242

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