Как вывести число всех возможных перестановок? - 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');
}