Zyava
Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору HRyk Вчера делал лабу, сегодня зашел на форум и как-то влом было читать твою тексту на бейсике с винграда , я почитал за сочетания на вики и написал две функции: Сочетания с повторениями: Код: void RecCombination(int ib, int jb, int n, int V[], int m, int Vrez[]) { for(int i = jb; i < n; i++) { Vrez[ib] = V[i]; if(ib == (m - 1)) { for(int k = 0; k < m; k++) { printf("%d", Vrez[k]); } printf("\n"); } else { RecCombination(ib + 1, i, n, V, m, Vrez); } } } | Сочетания без повторений: Код: void RecSimpleCombination(int ib, int jb, int n, int V[], int m, int Vrez[]) { for(int i = jb; i < n; i++) { Vrez[ib] = V[i]; if(ib == (m - 1)) { for(int k = 0; k < m; k++) { printf("%d", Vrez[k]); } printf("\n"); } else { RecSimpleCombination(ib + 1, i + 1, n, V, m, Vrez); } } } | соотвественно, вызываешь их в основной программе: Код: RecCombination(0, 0, n, DATA, m, VRez); RecSimpleCombination(0, 0, n, DATA, m, VRez); | Основную программу я с прошлого раза не трогал. Добавлю, что в массиве DATA должны быть уникальные числа (т.е. предварительно нужно это проверить и почистить - вдруг ввели с клавы одинаковые ). P.S. Эх, за last_wish не успеть | Всего записей: 324 | Зарегистр. 04-05-2006 | Отправлено: 21:00 02-03-2007 | Исправлено: Zyava, 21:25 02-03-2007 |
|