Рекурсивный алгоритм расчета комбинаций - C (СИ)
Формулировка задачи:
Входные данные:
n - количество столбцов (можно сказать бросков кубика)
m - количество граней кубика с числами от 1 до m
Необходимо составить рекурсивный алгоритм и программу на СИ, которая выводит все комбинации для заданного диапазона. Нужно использовать массивы для дальнейшего подсчета суммы чисел в комбинации
пример выходных данных:
111 sum=3
112 sum=4
113 sum=5
121 sum=4
122 sum=5
123 sum=6
131 sum=5
.....
333 sum=9
Помогите, хоть советом, а лучше рабочей программой. Голову сломал уже и весь инет перерыл - ничего не помогает.
Решение задачи: «Рекурсивный алгоритм расчета комбинаций»
textual
Листинг программы
- int X[n];
- for(i=0; i<n; i++) X[i] = 1; // Начальный вариант
- while(1) {
- for(i=0; i<n; i++) printf(" %d", X[i]);
- printf("\n");
- for(i=0; i<n; i++) {
- X[i]++;
- if (X[i] <= m) break;
- X[i] = 1;
- }
- if (i==n) break;
- }
Объяснение кода листинга программы
В данном коде реализуется рекурсивный алгоритм расчета комбинаций.
- Создается массив X, размер которого определяется переменной n.
- Изначально каждому элементу массива X присваивается значение 1.
- Далее выполняется цикл, который продолжается до тех пор, пока не будет достигнуто базовое условие.
- Внутри цикла выводится на экран значение каждого элемента массива X.
- Затем выполняется внутренний цикл, который прерывается, как только значение одного из элементов превышает m.
- Если внутренний цикл выполнен полностью, значит все комбинации искомой длины получены, и основной цикл прерывается.
- Код выводит на экран все найденные комбинации.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д