На чистом "С" напиши программу, которая выводит все возможные варианты перестановок и возможное количество перестановок
Напиши программу, которая выводит все возможные варианты перестановок и возможное количество перестановок. Программа должна запрашивать количество элементов, затем сами элементы (каждый элемент в отдельной строке), выводить возможные варианты перестановок (каждый вариант в отдельной строке) и возможное количество перестановок.
Пример работы программы:
Входные данные:
Введите количество элементов: 3
Введите элемент:1
Введите элемент:2
Введите элемент:3
Выходные данные:
123
132
213
231
312
321
Всего комбинаций: 6
#include <stdio.h>
#include <locale>
int fact(int a){
if (a <= 1) { return 1; }
return a * fact(a - 1);
}
int main(void)
{
setlocale(0, "RU");
printf("%s%d","Количество комбинаций: ", fact(твое число));
return 0;
}
Не надо нам вводить количество элементов. Просто вводим строку из них
#include <stdio.h>
#include <math.h>
void swap(char *a, char *b){char c=*a;*a=*b;*b=c;}
void perm(char a[], int l, int r){
if(l==r)printf("%s\n",a);
else{for(int i=l; i<=r; i++){swap(&a[l],&a[i]); perm(a,l+1,r); swap(&a[l],&a[i]);}}}
int main(){
char str[20]; printf("String: "); scanf("%s",str);
int n; for(n=0;str[n];n++); perm(str,0,n-1);
printf("\nn=%g\n",tgamma(n+1)); return 0;}
