Table of Contents

Generisanje svih varijacija sa ponavljanjem

Varijacije sa ponavljanjem

Definicija: Varijacije sa ponavljanjem skupa An od n elemenata k-te klase je svaka uređena k-torka skupa An.

Primer: Neka je dat skup A={0,1} sa 2 elementa. Varijacije sa ponavljanjem 3. klase su:

Problem

Potrebno je napisati program koji za zadati skup A i klasu k generiše sve varijacije sa ponavljanjem tog skupa. Program treba da radi za bilo koji tip podataka (slova, brojevi, reči, rečenice).

Algoritam

varijacije.c
#include <stdio.h>
#include <stdlib.h>
 
void varijacije(int n,int k,int pozicija, int niz[],int ubacen[])
		{
			int i;
 
		if (pozicija > k)
			{
				for (i=1;i<k+1;i++)
				printf("%d ",niz[i]);
				printf("\n");
			}
		else
			{
				for (i=1;i<n+1;i++)
					{
						if (ubacen[i]==0)
							{
								niz[pozicija]=i;
								varijacije(n,k,pozicija+1,niz,ubacen);
							}
					}
			}
 
			}
 
main()
{
int *niz;
int n,k;
printf("n=  \n");
scanf("%d",&n);
printf("k=\n");
scanf("%d",&k);
niz=(int *)malloc(n*sizeof(int));
ubacen=(int*)calloc(n+1,sizeof(int));
varijacije(n,k,1,niz,ubacen);