Все возможные комбинации цифр в массиве - C (СИ)
Формулировка задачи:
Доброго времени суток,у меня такой вопрос.
функция принимает массив из целых чисел и его велечину. и пичатает мне все возможные комбинации этих чисел.
к примеру:
int ar[]={1,2,3}, size=3 массив.
аутпут будет такой:
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
3 1 2
заранее спасибо.
Решение задачи: «Все возможные комбинации цифр в массиве»
textual
Листинг программы
#include <stdio.h> unsigned combine(FILE* _out, int* arr, int num){ unsigned n; int k, t, a, b, i, j, m; for(n = 0, j = m = 1; j != 0; ++n){ for(i = 0; i < num; ++i) fprintf(_out, "%d ", arr[i]); fputc('\n', _out); for(a = m, b = 0, j = num; j > 0; --j){ i = a % j; a /= j; if(i != 0){ if(a & 1) i = j - i; k = b - 1 + i; t = arr[k]; arr[k] = arr[b + i]; arr[b + i] = t; break; } else b += 1 - (a & 1); } ++m; } return n; } int main(void){ int a[] = { 1, 2, 3, 4 }; unsigned n = combine(stdout, a, sizeof(a)/sizeof(a[0])); printf("count: %u\n", n); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д