Добавил:
t.me мой будущий Dungeon Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
11.06.2025
Размер:
35.05 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра микро- и наноэлектроники

отчет

по лабораторной работе

по дисциплине «Информационные технологии»

Тема: «Алгоритм генерирования разбиений»

Студент гр. 1282

БОГДАН

Преподаватель

Фирсов Д. Д.

Санкт-Петербург

2022

Задание 1.

Задача:

Ввести с клавиатуры произвольное число. Применяя рекурсивный алгоритм генерирования разбиений получить и вывести на экран все возможные комбинации чисел, дающих в сумме введенное число.

Ход работы:

global A

m = input('Введите положительное число: ');

A=zeros(1,m);

disp('Разложение на слагаемые: ');

i=1;

dec(A,m,m,i);

function dec(F,n,k,i)

if n < 0

elseif n == 0

for j=1:i

if j>numel(F)

break;

end

if F(j)==0

disp(' ');

else

fprintf('%d ',F(j));

end

end

else

if n-k >= 0

F(i) = k;

dec(F, n-k, k, i+1);

end

if k-1>0

dec(F,n,k-1,i);

end

end

end

Листинг программы:

введите положительное число: 6

разложение на слагаемые:

6

5 1

4 2

4 1 1

3 3

3 2 1

3 1 1 1

2 2 2

2 2 1 1

2 1 1 1 1

1 1 1 1 1 1

Вывод: В ходе выполнения лабораторной работы был реализован алгоритм генерирования разбиений. Результатом алгоритма стал вывод на экран всех возможных комбинаций чисел, дающих в сумме введенное число.

Соседние файлы в папке ЛР7