Рекурсивный алгоритм расчета комбинаций - 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;
  }

Объяснение кода листинга программы

В данном коде реализуется рекурсивный алгоритм расчета комбинаций.

  1. Создается массив X, размер которого определяется переменной n.
  2. Изначально каждому элементу массива X присваивается значение 1.
  3. Далее выполняется цикл, который продолжается до тех пор, пока не будет достигнуто базовое условие.
  4. Внутри цикла выводится на экран значение каждого элемента массива X.
  5. Затем выполняется внутренний цикл, который прерывается, как только значение одного из элементов превышает m.
  6. Если внутренний цикл выполнен полностью, значит все комбинации искомой длины получены, и основной цикл прерывается.
  7. Код выводит на экран все найденные комбинации.

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы