Все возможные комбинации цифр в массиве - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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