Witam,
może mi ktoś wyjaśnić na jakiej zasadzie działa ten program? Ma on za zadanie liczyć permutacje wskazanego skończonego ciągu.
O co właściwie chodzi przy sprawdzaniu p==1? Czym jest ta zmienna? W pierwszym if wypisujemy w pętli wszystkie liczby od 1 do n. Ale nie wiem co robi kod w else? No i sama funkcja - permutacja? Pomoże ktoś? :-(
#include <stdio.h>
// n - ostatnia liczba zbioru
void permutacja(int T[], int p, int n) {
if(p==1) {
int i; // deklaracja zmiennej pomocniczej
for(i=0; i<n; i++) {
printf("%d ", T[i]); // wypisz każdą liczbę w linii dopóki nie przekroczy najwiekszej liczby zbioru - n
}
printf("\n");
}
else {
int S[n];
int i;
for(i=0; i<n; i++)
S[i]=T[i];
for(i=0; i<p; i++)
{
permutacja(S, p-1, n);
int t = S[i];
S[i] = S[p-1];
S[p-1] = t;
}
}
}
void nazwa(int n)
{
int T[n];
int i;
for(i=0; i<n; i++)
T[i] = i+1;
permutacja(T,n,n);
}
main() {
printf("Podaj ostatnia liczbe zbioru: ");
int n;
scanf("%d", &n);
nazwa(n);
}