YAPC::EU 2018 Glasgow Update!
This commit is contained in:
parent
22f33d4004
commit
4e2d22a71d
1170 changed files with 15042 additions and 3047 deletions
54
Task/Permutations/C/permutations-1.c
Normal file
54
Task/Permutations/C/permutations-1.c
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
#include <stdio.h>
|
||||
int main (int argc, char *argv[]) {
|
||||
//here we check arguments
|
||||
if (argc < 2) {
|
||||
printf("Enter an argument. Example 1234 or dcba:\n");
|
||||
return 0;
|
||||
}
|
||||
//it calculates an array's length
|
||||
int x;
|
||||
for (x = 0; argv[1][x] != '\0'; x++);
|
||||
//buble sort the array
|
||||
int f, v, m;
|
||||
for(f=0; f < x; f++) {
|
||||
for(v = x-1; v > f; v-- ) {
|
||||
if (argv[1][v-1] > argv[1][v]) {
|
||||
m=argv[1][v-1];
|
||||
argv[1][v-1]=argv[1][v];
|
||||
argv[1][v]=m;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//it calculates a factorial to stop the algorithm
|
||||
char a[x];
|
||||
int k=0;
|
||||
int fact=k+1;
|
||||
while (k!=x) {
|
||||
a[k]=argv[1][k];
|
||||
k++;
|
||||
fact = k*fact;
|
||||
}
|
||||
a[k]='\0';
|
||||
//Main part: here we permutate
|
||||
int i, j;
|
||||
int y=0;
|
||||
char c;
|
||||
while (y != fact) {
|
||||
printf("%s\n", a);
|
||||
i=x-2;
|
||||
while(a[i] > a[i+1] ) i--;
|
||||
j=x-1;
|
||||
while(a[j] < a[i] ) j--;
|
||||
c=a[j];
|
||||
a[j]=a[i];
|
||||
a[i]=c;
|
||||
i++;
|
||||
for (j = x-1; j > i; i++, j--) {
|
||||
c = a[i];
|
||||
a[i] = a[j];
|
||||
a[j] = c;
|
||||
}
|
||||
y++;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue