Advertisement
madalinaradu

ASD Pb 5 6 permut c d

May 26th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. /** p 5-6 permutari crescatoare / descrscatoare */
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<conio.h>
  5.  
  6. ///permutari 1234
  7. ///          1342
  8. /// in vect solutie scriem permutarea o afisam, urm suprascrie
  9.  
  10. int sol[20], n = 6;//globale
  11. void afisare() {
  12.     for (int i = 1; i <= n; i++) {
  13.         printf("%5d", sol[i]);
  14.     }
  15.     printf("\n");
  16. }
  17.  
  18. ///functia valid pentru permutari crescatoare, apoi descrescatoare
  19. int valid21(int k) {/// sau bool
  20.     for (int i = 1; i < k; i++) {
  21.         if (sol[k] == sol[i])
  22.             return 0;
  23.     }
  24.     int pozitie = n / 2;
  25.     if (k <= pozitie && k>1) {
  26.         if (sol[k] < sol[k - 1])
  27.             return 0;
  28.     }
  29.     if (k > pozitie + 1) {
  30.         if (sol[k] > sol[k - 1])
  31.             return 0;
  32.     }
  33.     return 1;
  34. }
  35.  
  36. ///functia valid pentru permutari descrescatoare, apoi crescatoare
  37. int valid22(int k) {// sau bool
  38.     for (int i = 1; i < k; i++) {
  39.         if (sol[k] == sol[i])
  40.             return 0;
  41.     }
  42.     int pozitie = n / 2;///mijloc
  43.     if (k <= pozitie && k>1) {
  44.         if (sol[k] > sol[k - 1])
  45.             return 0;
  46.     }
  47.     if (k > pozitie + 1) {
  48.         if (sol[k] < sol[k - 1])
  49.             return 0;
  50.     }
  51.     return 1;
  52. }
  53.  
  54. void bkt(int k) {
  55.  
  56.     for (int i = 1;i <= n;i++) {
  57.         sol[k] = i;
  58.         if (valid22(k)) {
  59.             if (k == n) {
  60.                 afisare();
  61.             }else {
  62.                 bkt(k + 1);
  63.             }
  64.         }
  65.     }
  66. }
  67.  
  68. ///cresc desc adaugam conditii, conditii de unicitate si cond
  69. ///ca pana la jum sa fie cresc/descresc si invers
  70. int main() {
  71.  
  72.  
  73.     bkt(1);
  74.     printf("-------");
  75.  
  76.     _getch();
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement