Как вывести число всех возможных перестановок? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

123 132 213 ... напишите на СИ пожалуйста

Решение задачи: «Как вывести число всех возможных перестановок?»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
void print(unsigned*, unsigned);
int main()
{
    unsigned n, i, x, count, temp, transpCount = 0, *arr;
    puts("Enter number:");
    while(1 != scanf("%u", &n)){
        puts("Data entry error!Try again:");
        getchar();
    }
    for(count = 0, x = n; x; x /= 10)
        count++;
    arr = malloc(count * sizeof *arr);
    for(i = 0, x = n; i < count; i++, x /= 10)
        *(arr + count - 1 - i) = x % 10;
    puts("Transpositions:");
    for(int k = 0; k < count; k++){
        temp = *(arr);
        *(arr) = *(arr + k);
        *(arr + k) = temp;
        for(int j = 0; j < count - 1; j++){
            for(i = count - 1; i > 1; i--){
                temp = *(arr + i);
                *(arr + i) = *(arr + i - 1);
                *(arr + i - 1) = temp;
                print(arr, count);
                transpCount++;
            }
        }
    }
    printf("\nTranspositions quantity: %u\n", transpCount);
    return 0;
}
void print(unsigned* A, unsigned size)
{
    for(int i = 0; i < size; i++)
        printf("%u", *(A + i));
    putchar('\t');
}

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


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

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

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