Kód:
#include <stdio.h>
#include <string.h>
/* Funkcia prehodí navzájom dva pointery
@param pointer na znak x
@param pointer na znak y
*/
void vymen(char *x, char *y)
{
char temp; // pomocny znak
temp = *x;
*x = *y;
*y = temp;
}
/*Funkcia vypíše všetky permutácie bez opakovania
@param retazec
@param pociatočny index retazca
@param posledny index retazca
*/
void permute(char a[], int l, int r)
{
int i;
if (l == r) {
printf("%s\n", a);
}
else
{
for (i = l; i <= r; i++)
{
vymen((a + l), (a + i));
permute(a, l + 1, r);
vymen((a + l), (a + i));
}
}
}
int main(void)
{
char str[] = "1234";
int n = strlen(str);
permute(str, 0, n-1);
return 0;
}
_________________
kódy píšem na platforme: linux Ubuntu 12.04 (Geany, Code::Blocks), WinXP (Code::Blocks, PsPad editor),
Skype: libcokamo, ICQ: 56312279
Ak treba, napíš mi na
libcosenior@gmail.com. To mám v mobile a stále po ruke.