Как вывести число всех возможных перестановок? - 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'); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д