Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
AlexM24
10 / 10 / 11
Регистрация: 09.12.2014
Сообщений: 89
1

Рекурсивный алгоритм расчета комбинаций

03.02.2015, 10:15. Просмотров 973. Ответов 6
Метки нет (Все метки)

Входные данные:
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

Помогите, хоть советом, а лучше рабочей программой. Голову сломал уже и весь инет перерыл - ничего не помогает.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2015, 10:15
Ответы с готовыми решениями:

Изменить алгоритм на рекурсивный. x^2+y^2<n
Здравствуйте, никак не могу переделать алгоритм на рекурсивный. Прошу помочь. #include &lt;stdio.h&gt;...

Рекурсивный алгоритм Евклида
Всем привет! Переделайте пожалуйста мой алгоритм Евклида с вычитанием на рекурсивный. unsigned...

Внедрить рекурсивный алгоритм в имеющуюся программу
Здравствуйте. есть такая программка #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt;...

Рекурсивный алгоритм с конём на шахматной доске
Даны две позиции шахматной доски. Определить за какое минимальное число шагов фигурой «конь» можно...

Рекурсивный алгоритм выражения числа через сумму
Помогите написать верный алгоритм решения задачи, по возможности объясните ошибки. Условие задачи:...

6
Байт
Эксперт C
20470 / 12995 / 2733
Регистрация: 24.12.2010
Сообщений: 27,197
03.02.2015, 11:42 2
Цитата Сообщение от AlexM24 Посмотреть сообщение
составить рекурсивный алгоритм
А не рекурсивный можно?
0
AlexM24
10 / 10 / 11
Регистрация: 09.12.2014
Сообщений: 89
03.02.2015, 12:05  [ТС] 3
Байт, А не рекурсивный ограничен количеством циклов, как мне кажется. Но для самообразования можно посмотреть.
0
Байт
Эксперт C
20470 / 12995 / 2733
Регистрация: 24.12.2010
Сообщений: 27,197
03.02.2015, 13:56 4
Лучший ответ Сообщение было отмечено AlexM24 как решение

Решение

Вот как-то так
C
1
2
3
4
5
6
7
8
9
10
11
12
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;
  }
Фактически - это поразрядное сложение
Цитата Сообщение от AlexM24 Посмотреть сообщение
не рекурсивный ограничен количеством циклов, как мне кажется
Не совсем понял фразу
1
AlexM24
10 / 10 / 11
Регистрация: 09.12.2014
Сообщений: 89
03.02.2015, 14:15  [ТС] 5
Байт, Ух ты! Работает! Только не пойму условие цикла while(1) - это как?
0
Байт
Эксперт C
20470 / 12995 / 2733
Регистрация: 24.12.2010
Сообщений: 27,197
13.08.2017, 10:38 6
Прошу прощения за некропост, но вопрос повис без ответа
Цитата Сообщение от AlexM24 Посмотреть сообщение
Только не пойму условие цикла while(1) - это как?
Просто цикл и все. Без проверки на окончание. Но зацикливания не произойдет, так как в теле цикла выполнится break
C
1
2
3
4
5
6
7
8
while(n>0) {
  ...
}
  // Эквивалентно
while(1) {
  if n <= 0) break;
  ...
}
0
_Ivana
4041 / 1881 / 235
Регистрация: 01.03.2013
Сообщений: 5,117
Записей в блоге: 16
14.08.2017, 22:40 7
Ну и чтобы вопрос о рекурсивном расчете также не остался без ответа
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int n, m, a[100];
 
bool show(int i) { return (i<n || !(cout<<'\n')) && cout<<a[i]<<'\t' && show(i+1); }
void f(int i);
void l(int i, int j) { if (j<=m) { a[i]=j; f(i+1); l(i, j+1); } }
void f(int i) { if (i>=n) show(0); else l(i, 1); }
 
int main() { cin>>n>>m; f(0); }
1
14.08.2017, 22:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2017, 22:40

Написать рекурсивный алгоритм, вычисляющий n-ный член арифметической прогрессии
Нужна помощь, нужно написать рекурсивный алгоритм, вычисляющий n-ный член арифметической прогрессии...

Разработать программу расчета комбинаций
Помогите пожалуйста. Всю суть я постарался изложить на картинке П.5.18. Правил Запрещено...

Формула расчета возможных комбинаций 8-ми значного пароля
Добрый вечер! Нужно подсчитать количество возможных комбинаций 8-ми значных паролей состоящих из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru