Advertisement
Dr4noel

BackTracking lab.4(ex 1)

Mar 20th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. int n = 5;
  5. int sol[20];
  6.  
  7. void BackTracking(int k);
  8. bool valid(int k);
  9. void afis();
  10.  
  11.  
  12. void main() {
  13.     //int k = 1;
  14.  
  15.     BackTracking(1);
  16.  
  17.     _getch();
  18. }
  19.  
  20. void BackTracking(int k) {
  21.     for (int i = 1; i <= n; i++) {
  22.         sol[k] = i;
  23.         if (valid(k)) {
  24.             if (k == n) {
  25.                 afis();
  26.             }
  27.             else {
  28.                 BackTracking(k + 1);
  29.             }
  30.         }
  31.     }
  32. }
  33.  
  34. bool valid(int k) {
  35.     for (int i = 1; i < k; i++)
  36.         if (sol[i] == sol[k])
  37.             return false;
  38.  
  39.     if (k % 2 == 0 && sol[k] != k)
  40.         return false;
  41.        
  42.     return true;
  43. }
  44.  
  45. void afis() {
  46.     for (int i = 1; i <= n; i++) {
  47.         printf("%d ", sol[i]);
  48.     }
  49.     printf("\n");
  50. }
  51.  
  52. //########################################################################################
  53. #include <stdio.h>
  54. #include <conio.h>
  55. #include <iostream>
  56.  
  57. using namespace std;
  58.  
  59.  
  60. int n = 5;
  61. int sol[20];
  62.  
  63. bool valid(int k) {
  64.     int i;
  65.     //cout << k << endl;
  66.     for (i = 1; i < k; i++) {
  67.  
  68.         if (sol[i] == sol[k]) {
  69.             return false;
  70.         }
  71.     }
  72.     if (k<(n / 2 + 1)) {
  73.         for (int i = 1; i < k; i++) {
  74.             if (sol[i] > sol[i + 1]) {
  75.                 return false;
  76.             }
  77.         }
  78.  
  79.     }
  80.     else {
  81.         for (int i = (n / 2) + 1; i < k; i++) {
  82.             if (sol[i] < sol[i + 1]) {
  83.                 return false;
  84.             }
  85.         }
  86.     }
  87.     return true;
  88. }
  89.  
  90. void afis(int sol[], int n) {
  91.     for (int i = 1; i <= n; i++) {
  92.         cout << sol[i] << " ";
  93.  
  94.     }
  95.     cout << endl;
  96. }
  97.  
  98.  
  99.  
  100. void BKT(int k) {
  101.     for (int i = 1; i <= n; i++) {
  102.         sol[k] = i;
  103.         if (valid(k)) {
  104.             if (k == n)
  105.                 afis(sol, n);
  106.             else BKT(k + 1);
  107.         }
  108.     }
  109.  
  110. }
  111.  
  112. void main() {
  113.  
  114.     BKT(1);
  115.  
  116.     _getch();
  117. }
  118.  
  119. //###############################################################################################33
  120. //GREEDY MAN
  121. #include <stdio.h>
  122. #include <conio.h>
  123. #include <iostream>
  124.  
  125. using namespace std;
  126.  
  127. int ban(int n ,int s, int e);
  128.  
  129. void main() {
  130.     int s, n, e, b, nr = 0;
  131.     //s = suma de bani , n = puteri ale lui e;
  132.     cout << "s = ";
  133.     cin >> s;
  134.  
  135.     cout << "n = ";
  136.     cin >> n;
  137.  
  138.     cout << "e  = ";
  139.     cin >> e;
  140.  
  141.     while (s > 0) {
  142.         b = ban(s, n, e);
  143.         printf("%d bancnote de %d lei\n", s / b, b);
  144.         nr += s / b;
  145.         s = s % b;
  146.     }
  147.     _getch();
  148. }
  149.  
  150. int ban(int s, int n, int e) {
  151.     int p = 1, i = 0;
  152.     while (p*e <= s && i < n) {
  153.         p *= e;
  154.         i++;
  155.     }
  156.  
  157.  
  158.     return p;
  159. }
  160.  
  161. //######################################################################################################
  162. //BUBLE SORT
  163. #include <stdio.h>
  164. #include <conio.h>
  165. #include <iostream>
  166.  
  167. using namespace std;
  168.  
  169. void main() {
  170.     int n = 7;
  171.     int glass;
  172.  
  173.     int v1[7] = { 2,8,5,5,3,7,9 };
  174.     int v2[7] = { 4,11,6,8,7,8,12 };
  175.  
  176.     //BUBLE SORT
  177.  
  178.     for (int i = 0; i < n; i++) {
  179.         for (int j = i+1; j < n; j++) {
  180.             if (v1[i] > v1[j]) {
  181.                 glass = v1[i];
  182.                 v1[i] = v1[j];
  183.                 v1[j] = glass;
  184.  
  185.                 glass = v2[i];
  186.                 v2[i] = v2[j];
  187.                 v2[j] = glass;
  188.             }
  189.         }
  190.     }
  191.  
  192.     for (int i = 0; i < n; i++) {
  193.         printf("%d  ", v1[i]);
  194.     }
  195.  
  196.     printf("\n");
  197.  
  198.     for (int i = 0; i < n; i++) {
  199.         printf("%d  ", v2[i]);
  200.     }
  201.  
  202.     _getch();
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement