Zdravim potreboval by som pomoct s jednym kodom je to program na vypocet permutacii s opakovanim a vyzera asi takto:
#include <stdio.h>
#define MAXN 10
#define MAXSUM 50
int c[MAXN], n, sum;
int a[MAXSUM];
void print(int k)
{
int i;
if (k == sum)
{
for (i = 0; i < sum; i++)
printf("%d ", a[i]+1);
printf("\n");
return;
}
for (i = 0; i < n; i++)
if (c[i] > 0)
{
c[i]--;
a[k] = i;
print(k+1);
c[i]++;
}
}
int main(void)
{
int i;
scanf("%d", &n);
for (i = sum = 0; i < n; i++)
{
scanf("%d", &c[i]);
sum += c[i];
}
print(0);
return 0;
}
problem je ze nechapem ako vlastne funguje ta reverzia v tomto programe a co vlastne reprezentuju premenne i a k...mohol by mi niekto laicky vysvetlit fungovanie tohto algoritmu?(teraz nemyslim take vysvetlenie ze tu sa z pola c odrata jednotka nasledne sa zavola ta a ta funkcia atd. ale skor vysvetlenie pricipu toho algoritmu) Dakujem pekne