Advertisement
rowers

permutacje

Feb 4th, 2015
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.53 KB | None | 0 0
  1. /*Algorytm do wykonania tego zadania został przedstawiony na prezentacji.
  2. */
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <time.h>
  7. #define n 4
  8. char* tab;
  9. char znak;
  10. clock_t start, koniec, czas;
  11.  
  12. void zamien(char* a, char* b)
  13.  
  14. {
  15.     char tmp = *a;
  16.     *a = *b;
  17.     *b = tmp;
  18. }
  19.  
  20.  
  21. void wyswietl()
  22.  
  23. {
  24.     int i;
  25.     for (i = 1; i <= n; ++i)
  26.     printf("%c", tab[i]);
  27.     puts("");
  28. }
  29.  
  30.  
  31.  
  32. void wypis(int x)
  33.  
  34. {
  35.     int y;
  36.     if (x == 1)
  37.     {
  38.         wyswietl();
  39.         return;
  40.     }
  41.     for (y = 1; y <= x; ++y)
  42.     {
  43.         zamien(&tab[y], &tab[x]);
  44.         wypis(x - 1);
  45.         zamien(&tab[y], &tab[x]);
  46.     }
  47. }
  48.  
  49. void bwypis(int x)
  50. {
  51.     int y;
  52.     if (x == 1) {
  53.         return;
  54.     }
  55.     for (y = 1; y <= x; ++y)
  56.     {
  57.         zamien(&tab[y], &tab[x]);
  58.         bwypis(x - 1);
  59.         zamien(&tab[y], &tab[x]);
  60.     }
  61. }
  62.  
  63. int main()
  64. {
  65.     tab = malloc((n + 1)*sizeof(char));
  66.     int i;
  67.     for (i = 1; i <= n; ++i)
  68.          tab[i] = i-1+'A';
  69.     printf("Czy wyswietlic wyniki na ekranie? (t - tak, inny znak - nie): ");                                
  70.     scanf("%c",&znak);      
  71.     printf("Permutacje zbioru {A..%c}:\n",n-1+'A');
  72.     if (znak == 't' || znak == 'T')  
  73.         {
  74.                 start = clock();
  75.                 wypis(n);
  76.                 koniec = clock();
  77.                 czas = koniec - start;
  78.         }
  79.     else
  80.         {
  81.                 start = clock();
  82.                 bwypis(n);
  83.                 koniec = clock();
  84.                 czas = koniec - start;
  85.         }
  86.     free(tab);
  87.     printf("Czas wykonania algorytmu: %d ms.\n",czas);
  88.     system ("PAUSE");
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement